IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Vue——transition组件 -> 正文阅读

[JavaScript知识库]Vue——transition组件

Vue的transition组件

  • 使用<transition>的时机,为什么使用<transition>,<transition>的实现原理

    • 首先我们需要理解<transition>有什么作用

      • <transition>组件用于给某个元素或组件添加过渡动画效果,只需要用<transition>把该元素或组件包裹起来,就可以封装成过渡组件。

        <transition name="fade">
        	<my-component></my-component>
        </transition>
        
    • <transition>的过渡效果出现时机

      • vue只有在插入、更新、移除DOM元素时,才会触发过渡效果
      • 所以只有在被插入、更新、移除的时候,封装成过渡组件才会出现过渡效果。
    • <transition>过渡效果的实现原理

      • <transition>的过渡效果的实现原理有2种
        • 利用CSS transition或animation来实现
        • 利用JavaScript钩子函数来实现
      • 也就是说,我们使用过渡组件也需要使用CSS或JavaScript来为它定义过渡效果。
    • 过渡组件的过渡效果的执行逻辑

      • 当有一个过渡组件A被插入、更新、移除后,会经过以下3步
        • 第一步,首先Vue会去查找过渡组件是否定义了CSS transition或animation效果,如果有的话,就会执行CSS定义的过渡效果。
        • 第二步,如果过渡组件没有设置CSS效果,那么Vue会去查找过渡组件是否设置了JavaScript钩子函数,如果有,会执行钩子函数定义的过渡效果。
        • 第三步,如果CSS和钩子函数都没有设置,那么不会展示过渡效果。(这时和未被<transition>包裹一样)。
  • <transition>的使用方法(CSS为例。命名<transition>会自动生成6个类供我们控制过渡效果)

    • 如果我们想要使用一个<transition>组件包裹而成的过渡组件,那么我们需要为<transition>设置一个name属性。

      <transition name="fade">
        <my-component></my-component>
      </transition>
      
    • 这样在组件过渡的过程中,会具有以下6个类名以供我们控制过渡效果

      这里我们将过渡过程分成2种:进入过渡(元素插入后进入过渡,一直到过渡效果完成结束);离开过渡(元素移除后进入离开过渡,过渡效果完成结束)

      • xxx-enter(fade-enter),进入过渡的开始状态,元素被插入时生效,只应用一帧后立刻删除。
      • xxx-enter-active(fade-enter-active),进入过渡的整个过程,元素被插入时生效,过渡过程完成后被移除。
      • xxx-enter-to(fade-enter-to),进入过渡的结束部分,在元素被插入后下一帧生效(这时xxx-enter被移除),在过渡效果完成后被移除。
      • xxx-leave(fade-leave),离开过渡的开始阶段,元素被删除时触发,只生效一帧后删除。
      • xxx-leave-active(fade-leave-active),离开过渡的整个阶段,元素被删除时生效,离开过渡完成时结束。
      • xxx-leave-to(fade-leave-to),离开过渡的结束阶段,在离开过渡被触发后一帧生效(同时xxx-leave被移除),在过渡完成之后移除

  • 自定义过渡类名

    • 自定义过渡类名是什么

      • 当我们对<transition>做了命名,那么会根据name属性自动生成。但是我们也可以通过为<transition>定义以下6个属性来定义类似于上面6个类名的自定义类名
        • enter-class,对标xxx-enter
        • enter-active-class,对标xxx-enter-active
        • enter-to-class,对标xxx-enter-to
        • leave-class,对标xxx-leave-class
        • leave-active-class,对标,xxx-leave-active
        • leave-to-class,对标xxx-leave-to
      <transition name="fade" 
        enter-class="fade-enter" 
        enter-active-class="fade-in-active"
        enter-to-class="fade-in-to"
        leave-class="fade-leave"
        leave-active-class="fade-out-active"
        leave-to-class="fade-out-to"
        >
        <my-component></my-component>
      </transition>
      
    • 为什么需要自定义过渡类名,自定义过渡类名的作用,什么时候使用自定义过渡类名

      • 自定义过渡类名优先级高于普通类名,在混合使用外部组件的时候会比较有用。
  • 如何指定过渡持续时间

    • 为什么需要指定过渡持续时间,指定过渡持续时间的作用

      • 大多数时候,使用Vue自动得出的过渡持续时间就可以达到预期效果,但有时候,我们需要手动控制整个过渡时间的持续时间、控制进入过渡的持续时间、控制离开过渡的持续时间
    • 指定过渡持续时间的方法(毫秒为单位)

      <transition :duration="1000">
        <my-component></my-component>
      </transition>
      
      <transition :duration="{enter: 500, leave: 800}">
        <my-component></my-component>
      </transition>
      

      第二个例子中,我们分别指定了进入过渡和离开过渡的持续时间。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2022-03-03 16:03:16  更:2022-03-03 16:04:12 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 8:49:21-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码