Vue 提供了 transition
的封装组件,在下列情形中,可以给任何元素和组件添加 entering/leaving 过渡
v-if
)v-show
)
组件中 ,过渡有四个状态 html
hello,看我渐渐地消失。
.fade-enter-active, .fade-leave-active {
transition: opacity .5s
}
.fade-enter, .fade-leave-to {
opacity: 0
}
new Vue({
el: '#demo',
data: {
show: true
}
})
注意:
对于这些在 enter/leave 过渡中切换的类名,v- 是这些类名的前缀(也就是例子中的fade,这个是可以自定义的)。使用
自定义过渡类就不需要 中的name属性了。类名可以是自己随意起,也可引入第三方动画库animate.css, 但是需要在 加入一些添加类名的属性
enter-class=类名
enter-active-class=类名 (常用)
leave-class=类名
leave-active-class=类名 (常用)
在引入第三方动画库 animate.css 时 以上属性要先添加 animated 类, 在添加 动画类名,例如:
enter-class=”animated tada “
hello
同时使用 Transitions 和 Animations
Vue 为了知道过渡的完成,必须设置相应的事件监听器。它可以是 transitionend
或animationend
,这取决于给元素应用的 CSS 规则。如果你使用其中任何一种,Vue 能自动识别类型并设置监听。
但是,在一些场景中,你需要给同一个元素同时设置两种过渡动效,比如 animation
很快的被触发并完成了,而 transition
效果还没结束。在这种情况中,你就需要使用type
特性并设置 animation
或 transition
来明确声明你需要 Vue 监听的类型。
① before-enter
② enter
③ after-enter
④ enter-cancelled (在 v-show 中应用)
⑤ before-leave
⑥ leave
⑦ after-leave
⑧ leave-cancelled (在 v-show 中应用)
这些钩子函数可以结合 CSS transitions/animations
使用,也可以单独使用。
当只用 JavaScript 过渡的时候, 在 enter 和 leave 中,回调函数 done 是必须的 。
否则,它们会被同步调用,过渡会立即完成。
如:
自定义 JavaScript 钩子:
请看我的变化div
我也会变化pppp
oneoneoneone
twotwotwotwo
threethreethree
2.过渡模式
在多个元素过渡时,这些元素会同时出发,vue 提供了两个属性,在 中加入 mode 属性,它有两个值
A.in-out: 新元素先进行过渡,完成之后当前元素过渡离开。
当把上面例子中
改为mode="out-in"时,效果是不一样。
列表的过渡需要用 v-for 和
组件
注意:
① 列表
在页面渲染出来是个 span 标签, 如果你想更改它用 tag 属性。例如
渲染出来就是div
② 列表在循环时 要给每一个列表项添加唯一的key 属性值。这样列表才会有过渡效果
1. FLIP 简单的动画队列(使用 transforms 将元素从之前的位置平滑过渡新的位置)
列表的位移过渡(
组件还有一个特殊之处。不仅可以进入和离开动画,还可以改变定位。)
只需了解新增的 v-move
特性:v-move
对于设置过渡的切换时机和过渡曲线非常有用。
如:
需要注意的是使用 FLIP 过渡的元素不能设置为 display: inline 。作为替代方案,可以设置为 display: inline-block 或者放置于 flex 中
引入lodash.min.js 实现随机排序
{{item}}
注意:FLIP 动画不仅可以实现单列过渡,多维网格的过渡也同样简单:
2.列表的渐进过渡
通过 data 属性与 JavaScript 通信 ,就可以实现列表的渐进过渡
3.可复用的过渡
要创建一个可复用过渡组件,你需要做的就是将
或者
作为根组件,然后将任何子组件放置在其中就可以了。
4.动态过渡
动态过渡最基本的例子是通过 name
特性来绑定动态值。