博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Vue中过度动画效果应用
阅读量:5864 次
发布时间:2019-06-19

本文共 3409 字,大约阅读时间需要 11 分钟。

 

 

一、实现动画过渡效果的几种方式

实现动画必须要将要进行动画的元素利用<transition>标签进行包裹

1、利用CSS样式实现过渡效果

 <transition name="fade"></transition>

  1. v-enter: 定义进入过渡的开始状态。在元素被插入时生效,在下一个帧移除。

  2. v-enter-active: 定义进入过渡的结束状态。在元素被插入时生效,在 transition/animation 完成之后移除。

  3. v-leave: 定义离开过渡的开始状态。在离开过渡被触发时生效,在下一个帧移除。

  4. v-leave-active: 定义离开过渡的结束状态。在离开过渡被触发时生效,在 transition/animation 完成之后

 

通过name的名称进行重命名,在样式文件中进行.fade-enter-active设置动画的效果即transition属性,需要注意的是动画结束后样式将会移除,所以如果想要动画实现之后元素保持有某个样式,则需要transition标签里面的元素的样式表中进行设置,此情况是针对元需要通过改变元素的属性来显示元素,如定位top,left以及通过transform将显示的元素的位置改变从而让元素出现在当前的视图窗口中时,但是如果元素v-show为true之后元素已经在视图中央显示了,不需要位置的移动将元素移动到视图中,只是想要显示的时候显示有动画效果的,则直接将动画结束的属性设置在v-enter-active/v-leave-active中即可。也就是说动画的属性如果只是产生效果,不对元素的任何属性进行修改,也就是动画中的属性样式不需要永久添加到dom元素中,则直接按后者的方式定义,如果说动画的属性同时相对元素进行样式设计,属性样式需要被添加到dom元素上,则需要按照前者的方式。

购物车

清空
  • { {selectName[index]}}
    ¥{ {food.price*food.count}}
.fold-enter-active,.fold-leave-active      transition:all 0.5s    .fold-enter,.fold-leave      transform :translate3d(0,0,0)    .shopcart-list      position:absolute      transform:translate3d(0,-100%,0)//动画结束后的效果需要在此处进行设置,设置在.fold-enter-active中,元素动画结束后该样式属性会被移除掉,将会看不到想要的效果      top: 100%//元素即使显示也不再视图窗口中,通过transform实现显示      z-index:-1      width:100%

2、利用animation或者是动画库实现动画效果

Look at me!

new Vue({  el: '#example-2',  data: {    show: true  }})
.bounce-enter-active {  animation: bounce-in 0.5s linear;}.bounce-leave-active {  animation: bounce-out 0.5s linear;}@keyframes bounce-in {  0% {    transform: scale(0);  }  50% {    transform: scale(1.5);  }  100% {    transform: scale(1);  }}@keyframes bounce-out {  0% {    transform: scale(1);  }  50% {    transform: scale(1.5);  }  100% {    transform: scale(0);  }}

3、自定义过度类名

  • enter-class
  • enter-active-class
  • leave-class
  • leave-active-class

 他们的优先级高于普通的类名,这对于 Vue 的过渡系统和其他第三方 CSS 动画库,如  结合使用十分有用。

1
2
3
4
5
6
7
8
9
10
11
12
13
<
link 
href="https://unpkg.com/animate.css@3.5.1/animate.min.css" rel="stylesheet" type="text/css">
<
div 
id="example-3">
  
<
button 
@click="show = !show">
    
Toggle render
  
</
button
>
  
<
transition
    
name="custom-classes-transition"
    
enter-active-class="animated tada"
    
leave-active-class="animated bounceOutRight"
  
>
    
<
p 
v-if="show">hello</
p
>
  
</
transition
>
</
div
>
new Vue({  el: '#example-3',  data: {    show: true  }})

可以在样式中同时使用transition和animation

4、利用JavaScript钩子函数实现过渡效果

methods: {  // --------  // 进入中  // --------  beforeEnter: function (el) {    // ...  },  // 此回调函数是可选项的设置  // 与 CSS 结合时使用  enter: function (el, done) {    // ...    done()  },  afterEnter: function (el) {    // ...  },  enterCancelled: function (el) {    // ...  },  // --------  // 离开时  // --------  beforeLeave: function (el) {    // ...  },  // 此回调函数是可选项的设置  // 与 CSS 结合时使用  leave: function (el, done) {    // ...    done()  },  afterLeave: function (el) {    // ...  },  // leaveCancelled 只用于 v-show 中  leaveCancelled: function (el) {    // ...  }}

在使用钩子函数实现动画的时候注意dom的异步刷新,需要结合this.$nextTick(),同时在leave和enter中设置样式前最好迫使dom进行回流(reflow)使dom重新渲染,如获取元素的offsetHeight等,然后在this.$nextTick()中设置新的样式,不然又可能实现不了动画的效果

 
分类: 

转载地址:http://uzynx.baihongyu.com/

你可能感兴趣的文章
两个人合作成功的案例
查看>>
Arduino小车的制作及硬件选型
查看>>
java项目创建和部署
查看>>
dreamweaver中如何清除代码中多余的空行?
查看>>
信息写入记事本方法
查看>>
【原创】使用Kettle的一些心得和经验
查看>>
quartz使用(整合spring)
查看>>
《Pro SQL Server Internals》部分翻译
查看>>
垃圾回收与对象的引用
查看>>
Agile.Net 组件式开发平台 - 权限管理组件
查看>>
vs2012扩展
查看>>
洛谷P1204 [USACO1.2]挤牛奶Milking Cows
查看>>
Git的使用
查看>>
哈希表
查看>>
iOS imagePicker使用方法,方便使用!三步轻松搞定!
查看>>
juicer使用备忘
查看>>
数据库分库分表和带来的唯一ID、分页查询问题的解决
查看>>
Deep learning:十四(Softmax Regression练习)
查看>>
spring-002-Ioc bean配置
查看>>
c++实现unet
查看>>