Vue——过渡和动画

  (1)Vue 提供了 transition 的封装组件,在下列情形中,可以给任何元素和组件添加进入/离开过渡

  • 条件渲染 (使用 v-if)
  • 条件展示 (使用 v-show)
  • 动态组件
  • 组件根节点

  (2)CSS 动画用法同 CSS 过渡,区别是在动画中 v-enter 类名在节点插入 DOM 后不会立即删除,而是在 animationend 事件触发时删除。

  (3)使用type attribute 并设置 animation 或 transition 来明确声明需要 Vue 监听的类型,这样就可以实现给同一个元素同时设置两种过渡动效。

  (4)<transition> 组件上的 duration 属性定制一个显性的过渡持续时间 (以毫秒计)。

  (5)当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。

  (6)推荐对于仅使用 JavaScript 过渡的元素添加 v-bind:css="false",Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。

  (7)可以通过 appear attribute 或者v-on:appear 钩子 设置节点在初始渲染的过渡。

  (8)当有相同标签名的元素切换时,需要通过 key attribute 设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容。给在 <transition> 组件中的多个元素设置 key 是一个更好的实践。

  (9)过渡模式

  • in-out:新元素先进行过渡,完成之后当前元素过渡离开。(该模式不是经常用)

  • out-in:当前元素先进行过渡,完成之后新元素过渡进入。

  (10)多个组件的过渡简单很多,不需要使用 key attribute。相反,我们只需要使用动态组件。

  (11)<transition-group> 组件,可以实现同时渲染整个列表,该组件的特点是:

  • 不同于 <transition>,它会以一个真实元素呈现:默认为一个 <span>。你也可以通过 tag attribute 更换为其他元素。
  • 过渡模式不可用,因为我们不再相互切换特有的元素。
  • 内部元素 总是需要 提供唯一的 key 属性值。
  • CSS 过渡的类将会应用在内部的元素中,而不是这个组/容器本身。
  • <transition-group>组件不仅可以进入和离开动画,还可以改变定位,此时需要用到v-move属性,它会在元素的改变定位的过程中应用。

  (12)Vue 使用了一个叫 FLIP 简单的动画队列,使用 transforms 将元素从之前的位置平滑过渡新的位置。使用 FLIP 过渡的元素不能设置为 display: inline,不过可以设置为 display: inline-block 或者放置于 flex 中;FLIP 动画不仅可以实现单列过渡,多维网格也同样可以过渡。

  (13)通过 data 属性与 JavaScript 通信 ,就可以实现列表的交错过渡(如:v-bind:data-index="index")。

  (14)创建一个可复用过渡组件,需要做的就是将 <transition> 或者 <transition-group> 作为根组件,然后将任何子组件放置在其中就可以了。

  (15)在 Vue 中即使是过渡也是数据驱动的,所有过渡 attribute 都可以动态绑定,不过还可以通过事件钩子获取上下文中的所有数据。

  (16)创建动态过渡的最终方案是组件通过接受 props 来动态修改之前的过渡。

 

posted @ 2020-03-18 10:22  晒太阳的兔子很忙  阅读(411)  评论(0编辑  收藏  举报