vue-进入/离开&列表过渡

2023-05-16

**

vue-进入/离开&列表过渡

**

  • 在 CSS 过渡和动画中自动应用 class
  • 可以配合使用第三方 CSS 动画库,如 Animate.css
  • 在过渡钩子函数中使用 JavaScript 直接操作 DOM
  • 可以配合使用第三方 JavaScript 动画库,如 Velocity.js
    过渡:Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。
    Vue 提供了内置的过渡封装组件,该组件用于包裹要实现过渡效果的组件。
    语法格式
<transition name = "nameoftransition">
   <div></div>
</transition>

示例:

<div id = "databinding">
<button v-on:click = "show = !show">点我</button>
<transition name = "fade">
    <p v-show = "show" v-bind:style = "styleobj">动画实例</p>
</transition>
</div>
<script type = "text/javascript">
var vm = new Vue({
el: '#databinding',
    data: {
        show:true,
        styleobj :{
            fontSize:'30px',
            color:'red'
        }
    },
    methods : {
    }
});
</script>

首先按照vue的语法设置databinding的容器标签,在其中先定义了一个按钮其中绑定了展示事件,然后设置了过渡格式一个名为fade的标签其中绑定了样式绑定,后面script进行实例化。
实例中通过点击 “点我” 按钮将变量 show 的值从 true 变为 false。如果为 true 显示子元素 p 标签的内容。
过渡其实就是一个淡入淡出的效果。Vue在元素显示与隐藏的过渡中,提供了 6 个 class 来切换:
过渡的类名

  • v-enter:定义进入过渡的开始状态。在元素被插入之前生效,在元素被插入之后的下一帧移除。
  • v-enter-active:定义进入过渡生效时的状态。在整个进入过渡的阶段中应用,在元素被插入之前生效,在过渡/动画完成之后移除。这个类可以被用来定义进入过渡的过程时间,延迟和曲线函数。
  • v-enter-to: 2.1.8版及以上 定义进入过渡的结束状态。在元素被插入之后下一帧生效 (与此同时 v-enter
    被移除),在过渡/动画完成之后移除。
  • v-leave: 定义离开过渡的开始状态。在离开过渡被触发时立刻生效,下一帧被移除。
  • v-leave-active:定义离开过渡生效时的状态。在整个离开过渡的阶段中应用,在离开过渡被触发时立刻生效,在过渡/动画完成之后移除。这个类可以被用来定义离开过渡的过程时间,延迟和曲线函数。
  • v-leave-to: 2.1.8版及以上 定义离开过渡的结束状态。在离开过渡被触发之后下一帧生效 (与此同时 v-leave
    被删除),在过渡/动画完成之后移除。
    在这里插入图片描述
    当插入或删除包含在 transition 组件中的元素时,Vue 将会做以下处理:
  • 自动嗅探目标元素是否应用了 CSS 过渡或动画,如果是,在恰当的时机添加/删除 CSS 类名。
  • 如果过渡组件提供了 JavaScript 钩子函数,这些钩子函数将在恰当的时机被调用。
  • 如果没有找到 JavaScript 钩子并且也没有检测到 CSS 过渡/动画,DOM 操作 (插入/删除)
    在下一帧中立即执行。(注意:此指浏览器逐帧动画机制,和 Vue 的 nextTick 概念不同)
    CSS动画:CSS 动画用法同 CSS 过渡,区别是在动画中 v-enter 类名在节点插入 DOM 后不会立即删除,而是在 animationend 事件触发时删除。
    示例:
    HTML代码
<div id="example-2">
  <button @click="show = !show">Toggle show</button>
  <transition name="bounce">
    <p v-if="show">Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris facilisis enim libero, at lacinia diam fermentum id. Pellentesque habitant morbi tristique senectus et netus.</p>
  </transition>
</div>

JS代码

new Vue({
  el: '#example-2',
  data: {
    show: true
  }
})

CSS代码

.bounce-enter-active {
  animation: bounce-in .5s;
}
.bounce-leave-active {
  animation: bounce-in .5s reverse;
}
@keyframes bounce-in {
  0% {
    transform: scale(0);
  }
  50% {
    transform: scale(1.5);
  }
  100% {
    transform: scale(1);
  }
}

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

  • enter-class
  • enter-active-class
  • enter-to-class (2.1.8+)
  • leave-class
  • leave-active-class
  • leave-to-class (2.1.8+)
    自定义过渡的类名优先级高于普通的类名,这样就能很好的与第三方(如:animate.css)的动画库结合使用。
<div id = "databinding">
<button v-on:click = "show = !show">点我</button>
<transition
    name="custom-classes-transition"
    enter-active-class="animated tada"
    leave-active-class="animated bounceOutRight"
>
    <p v-if="show">学的不仅是技术,更是梦想!!!</p>
</transition>
</div>
<script type = "text/javascript">
new Vue({
    el: '#databinding',
    data: {
        show: true
    }
})
</script>

同时使用过渡和动画
Vue 为了知道过渡的完成,必须设置相应的事件监听器。它可以是 transitionend 或 animationend ,这取决于给元素应用的 CSS 规则。如果你使用其中任何一种,Vue 能自动识别类型并设置监听。
但是,在一些场景中,你需要给同一个元素同时设置两种过渡动效,比如 animation 很快的被触发并完成了,而 transition 效果还没结束。在这种情况中,你就需要使用 type 特性并设置 animation 或 transition 来明确声明你需要 Vue 监听的类型。
显性的过渡持续时间:在很多情况下,Vue 可以自动得出过渡效果的完成时机。默认情况下,Vue 会等待其在过渡效果的根元素的第一个 transitionend 或 animationend 事件。然而也可以不这样设定——比如,我们可以拥有一个精心编排的一系列过渡效果,其中一些嵌套的内部元素相比于过渡效果的根元素有延迟的或更长的过渡效果。
在这种情况下你可以用 组件上的 duration 属性定制一个显性的过渡持续时间 (以毫秒计):

<transition :duration="1000">...</transition>

你也可以定制进入和移出的持续时间:

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

JavaScript 钩子
我们可以在属性中声明js的钩子函数:

<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>

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

这些钩子函数可以结合 CSS transitions/animations 使用,也可以单独使用。

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

推荐对于仅使用 JavaScript 过渡的元素添加 v-bind:css=“false”,Vue 会跳过 CSS 的检测。这也可以避免过渡过程中 CSS 的影响。
初始渲染的过渡
可以通过 appear 特性设置节点在初始渲染的过渡
语法如下:

<transition appear>
  <!-- ... -->
</transition>

这里默认和进入/离开过渡一样,同样也可以自定义 CSS 类名。

<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 钩子:

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

多个元素的过渡
我们可以设置多个元素的过渡,一般列表与描述:
需要注意的是当有相同标签名的元素切换时,需要通过 key 特性设置唯一的值来标记以让 Vue 区分它们,否则 Vue 为了效率只会替换相同标签内部的内容。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

vue-进入/离开&列表过渡 的相关文章

  • Dockerfile的CMD指令

    一 Docker的CMD指令 The main purpose of a CMD is to provide defaults for an executing container CMD在容器运行的时候提供一些命令及参数 xff0c 用法
  • usb供电相关

    1 针对集线器端口上的电涌警告 xff1a 在 设备管理器 gt 通用串行总线控制器 xff0d USB Root Hub gt 电源 中可以看到 xff0c 正在使用的USB设备的耗 由于频繁的插拔USB设备 xff0c 或在USB设备传
  • PHP四种设计模式

    1php常见开发模式 xff1a 1 单列模式 2 工厂模式 3 观察者模式 4 策略模式 2设计模式实例 1 单例模式 单例模式顾名思义 xff0c 就是只有一个实例 作为对象的创建模式 xff0c 单例模式确保某一个类只有一个实例 xf
  • CAN总线基础知识(一)

    1 xff0e CAN总线是什么 xff1f CAN xff08 Controller Area Network xff09 是ISO国际标准化的串行通信协议 广泛应用于汽车 船舶等 具有已经被大家认可的高性能和可靠性 CAN控制器通过组成
  • 【ROS Gazebo专题】二、Gazebo的使用上

    跳的比较快 xff0c 别人光介绍基础以及ros的基本操作就写了十几二十篇 xff0c 我一下就跳到了Gazebo这 xff0c 可怕有没有 其实原因很简单 xff0c 如果你将ros官网的基础篇章练习完了 xff0c 在最后一篇 wher
  • 程序员也该懂点UI细节

    虽然说项目开发过程中 xff0c 美工和程序各司其职 但是很多时候程序员本身也要知道一些UI设计的细节 一 每个页面的功能上要突出重点 比如说你首页是想引导更多用户注册的话 xff0c 你就要把注册按钮突出出来 如果你首页是你想引导用户更快
  • ftp 客户端软件的传输模式ASCII和二进制

    FTP可用多种格式传输文件 xff0c 通常由系统决定 xff0c 大多数系统 包括UNIX系统 只有两种模式 xff1a 文本模式和二进制模式 文本传输器使用ASCII字符 xff0c 并由回车键和换行符分开 xff0c 而二进制不用转换
  • 一步一步定制自己的google map(各个省市的经纬度查询)

    安徽省 合肥 北纬31 52 东经117 17 安徽省 安庆 北纬30 31 东经117 02 安徽省 蚌埠 北纬32 56 东经117 21 安徽省 亳州 北纬33 52 东经115 47 安徽省 巢湖 北纬31 36 东经117 52
  • 网页刷新或者重新加载后滚动条的位置不变

    在开发的过程中我们经常需要重新加载或者刷新某个画面 xff0c 已确保数据显示是最新的 但是如果一丁点改变就刷新画面的话 xff0c 会导致用户体验很差 xff0c 想想看你好不容易把网页拖到最后 xff0c 结果点击某个按钮的时候 xff
  • 番茄工作法(番茄钟时间管理)

    番茄工作法是我一次偶然的时间在网上看到的 xff0c 因为自己性格大大咧咧 丢三落四 xff0c 所以经常容易在时间问题上犯迷糊 很多人都有时间拖沓症 xff0c 就是一件事不到最后阶段不去解决它 比如你有一个星期的时间写的毕业论文 xff
  • jquery中美元符号($)命名冲突

    在Jquery中 xff0c 是JQuery的别名 xff0c 所有使用 的地方也都可以使用JQuery来替换 xff0c 如 39 msg 39 等同于JQuery 39 msg 39 的写法 然而 xff0c 当我们引入多个js库后 x
  • Django的密码操作

    一 关于密码操作的思维导图 二 修改密码内置函数源码 64 sensitive post parameters 64 csrf protect 64 login required 64 deprecate current app def p
  • js实现省市联动

    效果图如下 xff1a 思路很简单 xff0c 就是先加载省信息 xff0c 然后当省改变的时候加载市县信息 烦的是数据的录入 xff0c 代码如下 lt DOCTYPE html PUBLIC 34 W3C DTD XHTML 1 0 T
  • 正则在小偷程序中的应用(续)

    获取资源信息 content 61 file get contents 34 http list sososteel com qg list html pg 61 1 amp h 61 34 time 对抓取的信息进行处理 取class为l
  • mysql密码过期问题解决方案

    mysql密码过期问题解决方案 问题再现 xff1a 密码过期 旧电脑许久没有用 xff0c 今天打开发现数据库连接不上了 提示密码过期 xff0c 请修改密码 ERROR 1862 HY000 Your password has expi
  • Fast RTPS(DDS) 安装指南

    Foonathan Memory 在构建 Fast DDS 之前 xff0c 需要先安装 Foonathan Memory 依赖 span class token function git span clone https github c
  • ubuntu的两种软件安装方式

    第一种 xff1a sudo apt get install xxxxxxx 第二种 xff1a sudo dpkg i xxxx deb 参考文章
  • Ethernet下字节序和bit序的总结

    Ethernet下字节序和bit序的总结 本文讲述的是在ethernet中多字节数据发送时涉及到字节序和bit序的剖析 关于字节序 大小端 和bit序 xff0c 以及MSB和LSB的叙述 xff0c 请另行学习 xff0c 本篇不涉及 正
  • C++ 智能指针 unique_ptr 详解与示例

    unique ptr 是 C 43 43 11 提供的用于防止内存泄漏的智能指针中的一种实现 xff0c 独享被管理对象指针所有权的智能指针 unique ptr对象包装一个原始指针 xff0c 并负责其生命周期 当该对象被销毁时 xff0
  • ECMAScript 6 中的数组方法 - forEach

    let colors 61 red blue green es5 遍历数组的方法 span class hljs keyword for span let span class hljs keyword index span 61 span

随机推荐

  • ECMAScript 6 中的数组方法 - map

    span class hljs variable span 场景 span class hljs number 1 span 假设有一个数字数组 xff08 a xff09 xff0c 奖a数组中的值一双倍的形式放到b数组 span cla
  • 写在Paper Reading之前

    写在Paper Reading 之前 2016年第一篇文章 xff0c 就以paper reading开头 xff0c 这段时间最少写五篇 xff0c 达到申请专栏的条件 通过申请专栏 xff0c 也可以达到监督作用 xff0c 催促自己多
  • C++进程PID编程

    一 获取pid t的字节长度 1 代码 include lt iostream gt using namespace std int main int argc char argv pid t pid cout lt lt 34 sizeo
  • 异常检测——集成学习

    Ensembles for Unsupervised Outlier Detection Challenges and Research Questions 首先 xff0c 知道一个模型好不好 xff08 精确不 xff09 外部指标内部
  • Centos 防火墙

    一 对于centos7自带的防火墙的相关指令 systemctl stop firewalld service 停止firewall systemctl disable firewalld service 禁止firewall开机启动 sy
  • MissionPlanner编译流程及问题详解

    MissionPlanner编译流程及问题详解 一 xff0c 介绍 MissionPlanner是一款基于C 开发的开源的地面站软件 xff0c 主要用在Windows Linux平台 MP使用广泛 xff0c 提供了较为完善的功能 xf
  • 学术论坛第三期:多指标异常检测方法综述

    学术论坛 第三期 推荐阅读时长 xff1a 13min 前言 朋友们 xff01 本期内容干货满满 xff01 参考文献引用30余篇 xff01 xff01 答应我这篇文章一定要看 xff01 xff01 xff01 本期论坛我们邀请中国人
  • 数据平台与Flink任务运行原理介绍

    本文将从5个方面详细介绍数据平台大数据任务开发的基础知识 包含数据平台的简介 如何在平台内创建Flink表 如何编写Flink大数据处理作业 Flink任务启动时的调用流程以及Flink web UI 任务监控页面 此外 xff0c 将重点
  • vue中模板和组件分离

    vue中模板和组件分离 第一种 xff1a 使用script xff0c 将其类型跟改为text x template 代码示例如下 xff1a span class token operator lt span span class to
  • vue中的生命周期(钩子函数)

    vue中的生命周期 xff08 钩子函数 xff09 下图是整个vue的生命周期 生命周期共有八个钩子函数 生命周期 xff1a vue是一个构造函数 xff0c 执行这个函数的时候 xff0c 即相当于实例化了这个函数 xff0c 因此我
  • paddle的两阶段基础算法基础

    paddle的两阶段基础算法详解与实践 有三部分分别是 xff1a 1 xff0c 两阶段算法发展历程 2 xff0c Faster R CNN原理解析 3 xff0c Paddle Detection实战演练 一 xff1a 两阶段算法的
  • Faster R-CNN网络架构

    Faster R CNN网络架构原理解析 Anchor的第一个分支是一个分类分支负责判断途中有没有东西 xff0c 但是不会判断物品 第二个分支是回归分支表示Anchor和真实值有多远最终提取的候选框尽量向真实值靠拢 RPN层是如何提取候选
  • Faster R-CNN原理详解

    Faster R CNN原理详解 首先将RPN输出以及将anchor解码 xff0c 然后对预测框进行clip xff0c 然后对预测狂进行过滤 xff0c filter将面积太小的过滤掉 xff0c 然后将分数较低的去掉 xff0c NM
  • linux出现“INFO: task xxxxxx: 634 blocked for more than 120 seconds.”的3种解决方案

    1 问题描述 最近搭建的一个linux最小系统在运行到241秒时在控制台自动打印如下图信息 xff0c 并且以后每隔120秒打印一次 仔细阅读打印信息发现关键信息是 hung task timeout secs xff0c 第一次遇到这样的
  • vue中的计算属性和侦听器

    vue中的计算属性和侦听器 computed xff08 计算属性 xff09 在模板中放入太多的逻辑不但难以维护 xff0c 就连作者自身在看到代码的时候可能都难以理解 vue开发了计算属性 xff0c 计算属性是依赖于本身的响应式以来进
  • vue-列表的渲染

    vue 列表的渲染 vue的列表渲染指令是基于v for的 xff0c 官方文档中是这么说的 v for 指令需要使用 item in items 形式的特殊语法 xff0c 其中 items 是源数据数组 xff0c 而 item 则是被
  • vue-事件处理

    vue 事件处理 一般使用v on来进行事件监听 xff0c 在监听DOM事件时会触发一部分的js代码 使用v on xxx或 64 xxx绑定事件 xff0c xxx指 事件名 事件的回调要写在methods对象中 xff0c 最终会放在
  • R-CNN算法优化策略

    R CNN算法优化策略 1 xff0c 两阶段检测的进阶模型 首先进行数据处理 xff0c 然后输入backbone得到特征图 xff0c 然后进入RPN中提取候选区域roi xff0c 然后再ROI Align提取特争 xff0c 然后送
  • 一篇文章让你从入门到彻底学会Java

    一篇文章让你从入门到彻底学会Java 文章目录 一篇文章让你从入门到彻底学会Java第一个Java程序 43 基础知识详解Java的对象和类Java中的数据类型Java变量类型Java运算符Java中的循环Java 条件语句Java中的sw
  • vue-进入/离开&列表过渡

    vue 进入 离开 amp 列表过渡 在 CSS 过渡和动画中自动应用 class可以配合使用第三方 CSS 动画库 xff0c 如 Animate css在过渡钩子函数中使用 JavaScript 直接操作 DOM可以配合使用第三方 Ja