原理
1 .当插入或删除包含在transiotn组件中的元素时,vue会做以下处理
2 .自动嗅探目标元素是否应用了css过渡或者动画,如果是,在恰当的时候添加/删除css类名
3 .如果过渡钩子组件提供了js钩子函数,这些钩子函数将在恰当的时候被调用
4 .如果没有找到js钩子或者css过渡动画,dom操作将在下一帧中立即执行。
5 .自定义过渡的类名在过渡的时候的选择优先级优于自定义name里面的动画,
利用这个特性可以选择第三方的动画库,在没有选到更高级的类名的时候,这时还是会选择本来的元素
6 .通过使用transition组件,以及他组件中的各个方法,我们可以很容易的抓住元素在变化的时候的各个状态的周期函数,以及这个元素。那就是以后所有的动画都要包在transition里面的意思。也可以直接使用ref来操作。
7 .现在就有了两种操作动画的方式,一种就是直接使用css来实现,一种是使用js钩子函数来实现。前者比较适合一些淡入,淡出,比较简单的动画,后者适合一些比较复杂的,精细度更高的场景,而且css类名的样式规则会比动画设置的优先级更加的高。
8 .其中css中有两种实现效果,一种是自己写的样式,一种是使用外部的库,他们的优先级是后者优先于前者。
9 .过渡动画库 Velocity.js
10 .以上的都是单元素切换
多元素切换
1 .当有相同标签名的元素切换的时候,需要通过key来设置唯一的标记来让Vue区分它们,否则Vue为了效率只会替换相同标签内部的内容。相对的,及时在技术上没有必要,给transition组件中的多个元素设置key也是一个更好的实践。
2 .官网上给的是按钮的value值变化
多个组件的切换
1 .动态切换
2 .看样子slot插槽是不支持多个组件的过渡。<component v-bind:is="view"></component> 这个东西是不能识别的
3 .只能直接在transition里面加上这个东西
列表的过渡
1 .新的技术会激发你的想象,所以一定要用户活跃的技术
2 .使用v-for渲染整个列表
3 .v-for需要渲染的东西放在slot插槽里面,他的父元素是在tarnsition-group组件的tag属性修改,例如,如果需要渲染一个ul>li的结构,tag为ul,v-for写在li里面
4 .v-mode属性:会在元素改变定位的过程中应用,现在发现是添加的时候会监测到变化,但是减少的时候确看不到,是不是减少的时候检测不到位置变化。也可能是别的样式干扰了,这个还要仔细看一下
5 .注意:需要使用v-mode监测的元素是不嫩个设置为display:inline,替代方案可以设置为display:inline-block或者flex.
状态过渡:数字,运算,颜色,svg节点位置,元素大小和其他的属性
1 .颜色的话可以直接使用上面的内容,一个css动画就可以实现。但是更细粒度的,在js勾函数里面进行变化不知道可不可以实现
2 .结合这个内容和上面的内容,就可以实现任何的动画了。
3 .