zoukankan      html  css  js  c++  java
  • 过渡&动画

    进入/离开&列表过渡

    概述

    Vue在插入,更新或者移除Dom时,提供多种不同方式的应用过渡效果。包括以下工具

    • 在css过渡和动画中自动应用class
    • 可以配合使用第三方css动画库,如Animate.css
    • 在过渡钩子函数中使用JavaScript直接操作DOM
    • 可以配合使用第三方JavaScript动画库,如Velocity.js

    单元素/组件的过渡

    • Vue提供了transition的封装组件,在下列情形中,可以给任何元素的组件添加entering/leaving过渡
    • 条件渲染(使用v-if)
    • 条件展示(使用v-show)
    • 动态组件
    • 组件根节点

    html

    <div id="demo">
      <button v-on:click="show = !show">
        Toggle
      </button>
      <transition name="fade">
        <p v-if="show">hello</p>
      </transition>
    </div>
    

    js

    new Vue({
      el: '#demo',
      data: {
        show: true
      }
    })
    

    css

    .fade-enter-active, .fade-leave-active {
      transition: opacity .5s;
    }
    .fade-enter, .fade-leave-to /* .fade-leave-active below version 2.1.8 */ {
      opacity: 0;
    }
    

    过渡的类名

    在进入/离开的过渡中,会有6个class切换

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

    • 2.v-enter-active:定义过渡的状态。在元素整个过渡过程中作用,在元素被插入时生效,在transition/animation完成之后移除。这个类可以被用来定义过渡的过程时间,延迟和曲线函数

    • 3.v-enter-to:2.1.8版及以上定义进入过渡的结束状态。在元素被插入一帧后生效(与此同时v-enter被删除),在transition/animation完成后移除

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

    • 5.v-leave-active:定义离开过渡的状态。在元素整个过渡过程中作用,在离开过渡被触发后立即生效,在transition/animation完成之后移除。这个类可以被用来定义过渡的过程时间,延迟和曲线函数。

    • 6.v-leave-to:2.1.8版及以上定义离开过渡的结束状态。在离开过渡被触发一帧后生效(与此同时v-leave被删除),在transition/animation完成之后移除

    • 对于这些在 enter/leave 过渡中切换的类名,v- 是这些类名的前缀。使用 可以重置前缀,比如 v-enter 替换为 my-transition-enter。

    自定义过渡的类名

    我们可以通过以下特性来自定义过渡类名

    • enter-class
    • enter-active-class
    • enter-to-class(2.1.8+)
    • leave-class
    • leave-active-class
    • leave-to-class(2.1.8+)
    • 他们的优先级高于普通的类名

    显示的过渡持续时间

    duration 2.2.0新增

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

        <transition :duration="1000">...</transition>
      
    • 你也可以定制进入和移出的持续时间:

        <transition :duration="{ enter: 500, leave: 800 }">...</transition>
      

    JavaScript钩子

    可以在属性中声明JavaScript钩子

    html

    <transition
    	v-on:before-enter="beforeEnter"
    	v-on:enter="enter"
    	v-on:after-enter="afterEnter"
    	v-on:enter-cancelled="enterCancelled"
    
    	v-on:befor-leave="beforLeave"
    	v-on:leave="leave"
    	v-on:after-leave="afterLeave"
    	v-on:leave-cancelled="leaveCancelled"
    
    </transition>
    

    js

    // ...
    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) {
        // ...
      }
    }
    

    注意

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

    初始渲染的过渡

    • 可以通过appear特性设置节点在初始渲染的过渡

        <transition appear>
        
        </transition>
      
    • 这里默认和进入/离开过渡一样,同时也可以自定义css类名

    html

    	<transition
    	  appear
    	  appear-class="custom-appear-class"
    	  appear-to-class="custom-appear-to-class" (2.1.8+)
    	  appear-active-class="custom-appear-active-class"
    	>
    	  <!-- ... -->
    	</transition>
    
    • 自定义JavaScript钩子:

    html

    <transition
      appear
      v-on:before-appear="customBeforeAppearHook"
      v-on:appear="customAppearHook"
      v-on:after-appear="customAfterAppearHook"
      v-on:appear-cancelled="customAppearCancelledHook"
    >
      <!-- ... -->
    </transition>
    

    过渡模式

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

    列表的排序过渡

    • v-move对于设置过渡的切换时机和过渡曲线非常有用

    动态过渡

    • 在vue中即使是过渡也是数据驱动的!动态过渡最基本的例子是通过name特性来绑定动态值

        <transition v-bind:name="transitionName">
          <!-- ... -->
        </transition>
  • 相关阅读:
    JoymobilerV2.2.1发布
    对fckstyles.xml加载失败问题的解决
    角摩网改版了,突出手机电子书,手机游戏,手机软件等栏目
    J2ME的学习--编译出错
    角摩手机电子书生成专家 V2.1发布,可以合并txt,umd小说
    jmbook.dat的手机电子书格式
    Joymobiler角摩手机电子书生成专家
    绿色小巧的手机电子书制作+阅读器(支持txt,jar,umd,chm)V2.3发布
    角摩网给各网站提供在线手机电子书制作接口
    joymbiler角摩电子书专家升级至V2.6
  • 原文地址:https://www.cnblogs.com/DCL1314/p/8567234.html
Copyright © 2011-2022 走看看