美文网首页
VUE 过渡

VUE 过渡

作者: 李霖弢 | 来源:发表于2019-08-14 18:09 被阅读0次

transition过渡

transition的触发条件
  1. 条件渲染 (使用 v-if)
  2. 条件展示 (使用 v-show)
  3. 动态组件
  4. 组件根节点 (即其中只能有一个元素)

当插入或删除包含在 transition 组件中的元素时

  1. 自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,在恰当的时机添加/删除 CSS 类名。
  2. 如果过渡组件提供了JavaScript 钩子函数,这些钩子函数将在恰当的时机被调用。
  3. 如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画,DOM 操作 (插入/删除) 在下一帧中立即执行。
过渡/动画的类名 (支持自定义)
  1. v-enter:定义进入过渡的开始状态。在元素被插入之前生效。过渡时会在元素被插入之后的下一帧移除。动画时会在animationend 事件触发时删除。
  2. v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
  3. v-enter-to:定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter 被移除),在过渡/动画完成之后移除。
  4. v-leave: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
  5. v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
  6. v-leave-to: 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave 被删除),在过渡/动画完成之后移除。


    六个class
  <transition name="fade">
    <p v-if="show">hello</p>
  </transition>
...
.fade-enter-active, .fade-leave-active {
  transition: opacity .5s;
}
.fade-enter, .fade-leave-to{
  opacity: 0;
}
显性的过渡持续时间 查看文档
JavaScript 钩子

可以在属性中声明 JavaScript 钩子

<transition
  v-on:before-enter="beforeEnter"
  v-on:enter="enter"
  v-on:after-enter="afterEnter"
  v-on:enter-cancelled="enterCancelled"

  v-on:before-leave="beforeLeave"
  v-on:leave="leave"
  v-on:after-leave="afterLeave"
  v-on:leave-cancelled="leaveCancelled"
>
  <!-- ... -->
</transition>
// ...
methods: {
  // 进入中
  beforeEnter: function (el) {
    // ...
  },
  // 当与 CSS 结合使用时 回调函数 done 是可选的
  enter: function (el, done) {
    // ...
    done()
  },
  afterEnter: function (el) {
    // ...
  },
  enterCancelled: function (el) {
    // ...
  },
  // 离开时
  beforeLeave: function (el) {
    // ...
  },
  // 当与 CSS 结合使用时 回调函数 done 是可选的
  leave: function (el, done) {
    // ...
    done()
  },
  afterLeave: function (el) {
    // ...
  },
  // leaveCancelled 只用于 v-show 中
  leaveCancelled: function (el) {
    // ...
  }
}

注意:

  1. 当只用 JavaScript 过渡的时候,在 enter 和 leave 中必须使用 done 进行回调。否则,它们将被同步调用,过渡会立即完成。
  2. 推荐对于仅使用 JavaScript 过渡的元素添加 v-bind:css="false",Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。
初始渲染的过渡

可以通过 appear 特性设置节点在初始渲染的过渡。语法和enter/leave相同。

.fade-appear{}
.fade-appear-to{}
.fade-appear-active{}
...
<transition name="fade"
  appear
  v-on:before-appear="customBeforeAppearHook"
  v-on:appear="customAppearHook"
  v-on:after-appear="customAfterAppearHook"
  v-on:appear-cancelled="customAppearCancelledHook"
>
  <!-- ... -->
</transition>
多个元素/组件过渡
  • 多个元素过渡
    当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容。
  • 多个组件过渡
    使用动态组件即可。
  • 过渡模式
    in-out:新元素先进行过渡,完成之后当前元素过渡离开。
    out-in:当前元素先进行过渡,完成之后新元素过渡进入。
<transition name="fade" mode="out-in">
  <!-- ... the buttons ... -->
</transition>
列表过渡

使用<transition-group> 组件。

  • 不同于 <transition>,它会以一个真实元素呈现:默认为一个 <span>。你也可以通过 tag 特性更换为其他元素。
  • 过渡模式不可用,因为我们不再相互切换特有的元素。
  • 内部元素 总是需要 提供唯一的 key 属性值。
  • CSS 过渡的类将会应用在内部的元素中,而不是这个组/容器本身。

<transition-group> 内部动画队列(对display: inline无效)可自动实现列表的排序过渡

状态过渡

配合 TweenMax执行如数字增长/颜色渐变动画

<script src="https://cdnjs.cloudflare.com/ajax/libs/gsap/1.20.3/TweenMax.min.js"></script>

<div id="animated-number-demo">
  <input v-model.number="number" type="number" step="20">
  <p>{{ animatedNumber }}</p>
</div>
...
new Vue({
  el: '#animated-number-demo',
  data: {
    number: 0,
    tweenedNumber: 0
  },
  computed: {
    animatedNumber: function() {
      return this.tweenedNumber.toFixed(0);
    }
  },
  watch: {
    number: function(newValue) {
      TweenLite.to(this.$data, 0.5, { tweenedNumber: newValue });
    }
  }
})

相关文章

  • Vue中多个元素或组件的过渡

    Vue中多个元素的过渡 Vue中多个组件的过渡(通过动态组件实现组件的过渡动画效果)image.png

  • Vue学习笔记进阶篇——列表过渡及其他

    本文为转载,原文:Vue学习笔记进阶篇——列表过渡及其他本文将介绍Vue中的列表过渡,动态过渡, 以及可复用过渡是...

  • 过渡&&动画总结

    一. vue的过渡与动画 Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。过渡效果的应用...

  • Vue-(6)过渡 & 动画

    过渡 Vue在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。Vue 提供了内置的过渡封装组件,该...

  • 2021-01-08

    Vue过渡和动画 Vue过渡和动画官方文档[https://cn.vuejs.org/v2/guide/trans...

  • Vue过渡动画

    vue可以在元素或组件进入和消失的时候提供过渡效果 使用过渡: vue会自动嗅探目标元素是否应用了 CSS 过渡或...

  • vue过渡

    概述 Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。包括以下工具: 在 CSS 过渡和...

  • vue过渡

    常用自定义动画 外部引用animation

  • VUE 过渡

    transition过渡 transition的触发条件 条件渲染 (使用 v-if) 条件展示 (使用 v-sh...

  • vue过渡

    1.了解六个类名 .v-enter 进入开始类名.v-enter-to 进入结束类名.v-enter-act...

网友评论

      本文标题:VUE 过渡

      本文链接:https://www.haomeiwen.com/subject/hgunjctx.html