Vue学习计划九:了解Vue动画效果以及过渡动画和动态组件的使用方法
Vue.js 是一个流行的 JavaScript 框架,它提供了很多工具和功能,可以帮助开发人员创建动态、交互式的 Web 应用程序。其中之一就是动画效果,Vue.js 提供了一系列的 API 和指令,使得添加动画效果变得非常容易。
在 Vue.js 中,动画效果主要分为两类:过渡动画和动态组件。
过渡动画
过渡动画是指在元素插入、更新或移除时,Vue.js 自动添加动画效果。Vue.js 提供了两种方式实现过渡动画:使用 CSS 过渡和使用 JavaScript 钩子函数。
CSS 过渡
使用 CSS 过渡可以让元素在插入、更新或移除时,自动添加过渡效果。Vue.js 提供了 transition 组件和 transition-group 组件来实现 CSS 过渡。
transition 组件
transition 组件是用来给单个元素添加过渡效果的。使用 transition 组件时,需要在元素上添加 v-if 或 v-show 指令来控制元素的显示和隐藏,然后在元素上添加 transition 组件并设置相应的属性。
例如,下面的代码演示了如何给一个 div 元素添加过渡效果:
<template><div><button @click="toggle">Toggle</button><transition name="fade"><p v-if="show">Hello, Vue.js!</p></transition></div>
</template><script>
export default {data() {return {show: false}},methods: {toggle() {this.show = !this.show}}
}
</script><style>
.fade-enter-active, .fade-leave-active {transition: opacity .5s;
}
.fade-enter, .fade-leave-to {opacity: 0;
}
</style>
在上面的代码中,transition 组件包围了一个 p 元素,当 v-if="show" 时,p 元素才会显示。transition 组件通过 name 属性指定了过渡效果的名称,这里使用了 fade。在 style 标签中,我们定义了 fade-enter-active 和 fade-leave-active 类来控制过渡效果的持续时间和属性,同时也定义了 fade-enter 和 fade-leave-to 类来控制过渡前后的状态。
当 show 的值改变时,p 元素的显示和隐藏就会触发过渡效果。在元素插入时,Vue.js 会自动添加 fade-enter 类,然后在下一帧添加 fade-enter-active 类,这样就会触发过渡效果。在元素移除时,Vue.js 会自动添加 fade-leave-active 类,然后在下一帧添加 fade-leave-to 类,这样也会触发过渡效果。
transition-group 组件
transition-group 组件是用来给多个元素添加过渡效果的。使用 transition-group 组件时,需要在元素上添加 v-for 指令,并设置 key 属性来区分各个元素。然后在 transition-group 组件上添加相应的属性。
例如,下面的代码演示了如何给一个列表添加过渡效果:
<template><div><button @click="add">Add</button><button @click="remove">Remove</button><transition-group name="list" tag="ul"><li v-for="(item, index) in items" :key="index">{{ item }}</li></transition-group></div>
</template><script>
export default {data() {return {items: ['Apple', 'Banana', 'Cherry']}},methods: {add() {this.items.push('Durian')},remove() {this.items.splice(this.items.length - 1, 1)}}
}
</script><style>
.list-enter-active, .list-leave-active {transition: all .5s;
}
.list-enter, .list-leave-to {opacity: 0;transform: translateY(30px);
}
</style>
在上面的代码中,transition-group 组件包围了一个 ul 元素和一个 v-for 循环,每个 li 元素都有一个唯一的 key 属性。在 style 标签中,我们定义了 list-enter-active 和 list-leave-active 类来控制过渡效果的持续时间和属性,同时也定义了 list-enter 和 list-leave-to 类来控制过渡前后的状态。
当元素被添加或移除时,Vue.js 会自动添加相应的过渡类,从而触发过渡效果。
JavaScript 钩子函数
除了使用 CSS 过渡外,Vue.js 还提供了 JavaScript 钩子函数,可以让开发人员更加灵活地控制过渡效果。Vue.js 提供了 before-enter、enter、after-enter、enter-cancelled、before-leave、leave、after-leave 和 leave-cancelled 八个钩子函数,开发人员可以在这些钩子函数中添加自定义的代码来控制过渡效果。
例如,下面的代码演示了如何使用 JavaScript 钩子函数来实现一个自定义的过渡效果:
<template><div><button @click="toggle">Toggle</button><transition @before-enter="beforeEnter"@enter="enter"@after-enter="afterEnter"@before-leave="beforeLeave"@leave="leave"@after-leave="afterLeave"><p v-if="show">Hello, Vue.js!</p></transition></div>
</template><script>
export default {data() {return {show: false}},methods: {toggle() {this.show = !this.show},beforeEnter(el) {el.style.opacity = 0el.style.transform = 'translateY(-30px)'},enter(el, done) {el.offsetWidth // 触发重绘el.style.opacity = 1el.style.transform = ''el.addEventListener('transitionend', done)},afterEnter(el) {console.log('afterEnter')},beforeLeave(el) {el.style.opacity = 1el.style.transform = ''},leave(el, done) {el.style.opacity = 0el.style.transform = 'translateY(-30px)'el.addEventListener('transitionend', done)},afterLeave(el) {console.log('afterLeave')}}
}
</script><style>
p {transition: all .5s;
}
</style>
在上面的代码中,我们使用了 @before-enter、@enter、@after-enter、@before-leave、@leave 和 @after-leave 这些钩子函数来控制过渡效果。beforeEnter、enter 和 afterEnter 钩子函数用来控制插入时的过渡效果,beforeLeave、leave 和 afterLeave 钩子函数用来控制移除时的过渡效果。
当元素插入时,Vue.js 会依次触发 before-enter、enter 和 after-enter 钩子函数,当元素移除时,Vue.js 会依次触发 before-leave、leave 和 after-leave 钩子函数。
动态组件
动态组件是指在 Vue.js 中可以动态地切换组件的显示和隐藏。使用动态组件可以实现很多有趣的效果,例如实现一个可切换不同页面的单页应用程序。
在 Vue.js 中,使用 <component> 元素来实现动态组件。可以使用 :is 属性来指定当前要显示的组件,同时也可以使用 keep-alive 组件来缓存已经创建的组件。
例如,下面的代码演示了如何使用动态组件来实现一个简单的单页应用程序:
<template><div><nav><ul><li><a href="#" @click.prevent="showPage('home')">Home</a></li><li><a href="#" @click.prevent="showPage('about')">About</a></li><li><a href="#" @click.prevent="showPage('contact')">Contact</a></li></ul></nav><transition mode="out-in" name="fade"><component :is="currentPage" key="currentPage"></component></transition></div>
</template><script>
import HomePage from './HomePage.vue'
import AboutPage from './AboutPage.vue'
import ContactPage from './ContactPage.vue'export default {components: {HomePage,AboutPage,ContactPage},data() {return {currentPage: 'home'}},methods: {showPage(page) {this.currentPage = page}}
}
</script><style>
.fade-enter-active, .fade-leave-active {transition: opacity .5s;
}
.fade-enter, .fade-leave-to {opacity: 0;
}
</style>
在上面的代码中,我们使用了 <component> 元素来实现动态组件,并使用 :is 属性来指定当前要显示的组件。在 nav 元素中,我们添加了三个链接,分别切换到 HomePage、AboutPage 和 ContactPage 组件。
在 transition 组件中,我们使用了 mode="out-in" 属性来控制过渡效果的顺序,同时也指定了过渡效果的名称为 fade。在 style 标签中,我们定义了 fade-enter-active 和 fade-leave-active 类来控制过渡效果的持续时间和属性,同时也定义了 fade-enter 和 fade-leave-to 类来控制过渡前后的状态。
当点击链接时,showPage 方法会改变 currentPage 的值,从而触发动态组件的更新。Vue.js 会自动根据新的 currentPage 值来渲染对应的组件,并添加相应的过渡效果。
总结
在 Vue.js 中,动画效果可以让 Web 应用程序变得更加生动、有趣和交互性。Vue.js 提供了丰富的 API 和指令,使得添加动画效果变得非常容易。本文主要介绍了 Vue.js 中的两种动画效果:过渡动画和动态组件,并给出了相应的使用示例。开发人员可以根据自己的需求来选择相应的动画效果,并根据需要自定义相应的样式和行为。
相关文章:
Vue学习计划九:了解Vue动画效果以及过渡动画和动态组件的使用方法
Vue.js 是一个流行的 JavaScript 框架,它提供了很多工具和功能,可以帮助开发人员创建动态、交互式的 Web 应用程序。其中之一就是动画效果,Vue.js 提供了一系列的 API 和指令,使得添加动画效果变得非常容易。 在 Vue.js 中&#…...
【Linux】进程理解与学习Ⅲ-环境变量
环境:centos7.6,腾讯云服务器Linux文章都放在了专栏:【Linux】欢迎支持订阅🌹相关文章推荐:【Linux】冯.诺依曼体系结构与操作系统【Linux】进程理解与学习Ⅰ-进程概念浅谈Linux下的shell--BASH【Linux】进程理解与学习…...
【三】一起算法---栈:STL stack、手写栈、单调栈
纸上得来终觉浅,绝知此事要躬行。大家好!我是霜淮子,欢迎订阅我的专栏《算法系列》。 学习经典算法和经典代码,建立算法思维;大量编码让代码成为我们大脑的一部分。 ⭐️已更系列 1、基础数据结构 1.1、链表➡传送门 1…...
电路设计的一些概念
锁存器的产生 论述1 (转)时序电路,生成触发器,触发器是有使能端的,使能端无效时数据不变,这是触发器的特性。 组合逻辑,由于数据要保持不变,只能通过锁存器来保存。 第一个代码,由于是时序逻…...
【Linux】Linux下权限的理解
前言:在之前我们已经对基本的指令进行了深入的学习,接下来我将带领大家学习的是关于权限的相关问题。在之前,我们一直是使用的【root】用户,即为“超级用户”,通过对权限的学习之后,我们就会慢慢的切换到普…...
Prometheus监控实战系列十七:探针监控
目前对于应用程序的监控主要有两种方式,一种被称为白盒监控,它通过获取目标的内部信息指标,来监控目标的状态情况,我们前面介绍的主机监控、容器监控都属于此类监控。另一种则是“黑盒监控”,它指在程序外部通过探针的…...
题目:JPA的懒加载失效是什么情况?
题目:JPA的懒加载失效是什么情况?Q1:什么是JPA的懒加载?Q2:JPA的懒加载会在什么情况下失效?Q3:如何避免JPA的懒加载失效?前言:在使用JPA进行数据库操作时,懒加…...
十六、消息推送
一、什么是消息推送? 消息推送通常是指网站的运营工作等人员,通过某种工具对用户当前网页或移动设备 APP 进行的主动消息推送。 消息推送一般又分为 Web 端消息推送和移动端消息推送。 消息推送无非是推(push)和拉(p…...
PMP项目管理-【第一章】引论
项目知识体系: 项目管理知识体系: 1.1 项目特性 独特性:独特性会带来不确定性(风险) 临时性:1> 任何项目都有起始终止时间 2> 项目具备临时性,项目成果可能是永久的 1.2 项目驱动变革 从商业角度来看,…...
前端布局小案例,分享3个漂亮的卡片组件
当今互联网发展迅猛,各种应用、网站和软件层出不穷,其中前端技术的发展更是让人瞩目。随着用户对于界面设计的要求越来越高,漂亮的卡片组件在各类网页设计中变得越来越流行。本文将分享三个精美的卡片组件,帮助您在前端开发中轻松…...
博客重载记录
博客重载记录流控算法实现open系统调用流程二分查找前言: 有时候看了一些比较好的文章,过几天就忘了,想想不如自己实现一遍博客代码或按博客结构自己写一遍,加深印象,但把别人的内容改个名字变成自己的博客,…...
open-cv绘制简单形状line() circle() rectangle() polylines() putText() cvtColor()
OpenCV彩色图像中一个像素是按照“B-G-R”模式组织的。 绘图函数的一些公众参数: img :图像对象 color: 颜色,如果彩色用一个三元组表示,三元组的元素按照B-G-R组织,三元组(0,255,0)中B为0,G为2…...
基于 PyTorch + LSTM 进行时间序列预测(附完整源码)
时间序列数据,顾名思义是一种随时间变化的数据类型。 例如,24小时内的温度、一个月内各种产品的价格、某家公司一年内的股票价格等。深度学习模型如长短期记忆网络(LSTM)能够捕捉时间序列数据中的模式,因此可以用于预…...
GEE页面介绍
目录一、背景二、用户界面三、数据类型:栅格1、请求图像集合2、学习查看栅格元数据3、矢量实例一:四、数据集五、数据属性1、空间分辨率2、时间分辨率六可视化多个波段1、真彩色(TCI)2彩色红外(CI)3、伪色 1 和 2 (FC1/FC2)七、可…...
python自动发送邮件,qq邮箱、网易邮箱自动发送和回复
在python中,我们可以用程序来实现向别人的邮箱自动发送一封邮件,甚至可以定时,如每天8点钟准时给某人发送一封邮件。今天,我们就来学习一下,如何向qq邮箱,网易邮箱等发送邮件。 一、获取邮箱的SMTP授权码。…...
hastcat
hashcat 下载地址: https://hashcat.net/hashcat/ 案例 Usage: hashcat [options]... hash|hashfile|hccapxfile [dictionary|mask|directory]...https://xz.aliyun.com/t/4008破解linux shadow /etc/shadow中密码格式: $id$salt$encrypted如:$1$2eWq10AC$NaQqalCk3 1表…...
242. 一个简单的整数问题
Powered by:NEFU AB-IN Link 文章目录242. 一个简单的整数问题题意思路代码242. 一个简单的整数问题 题意 给定长度为 N的数列 A,然后输入 M行操作指令。 第一类指令形如 C l r d,表示把数列中第 l∼r个数都加 d 第二类指令形如 Q x,表示询问…...
docker安装Redis高可用(一主二从三哨兵)
本次教程使用docker swarm安装 准备三台机器 hostIP用途node1192.168.31.130redis-master01,redis哨兵节点01node2192.168.31.131redis-slave01, redis哨兵节点02node3192.168.31.132redis-slave02 redis哨兵节点02 注意事项: 1:需要保证三…...
安全防御之入侵检测篇
目录 1.什么是IDS? 2.IDS和防火墙有什么不同?3.IDS的工作原理? 4.IDS的主要检测方法有哪些?请详细说明 5.IDS的部署方式有哪些? 6.IDS的签名是什么意思?签名过滤器有什么用?例外签名的配置作…...
学习系统编程No.10【文件描述符】
引言: 北京时间:2023/3/25,昨天摆烂一天,今天再次坐牢7小时,难受尽在不言中,并且对于笔试题,还是非常的困难,可能是我做题不够多,也可能是没有好好的总结之前做过的一些…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
Java - Mysql数据类型对应
Mysql数据类型java数据类型备注整型INT/INTEGERint / java.lang.Integer–BIGINTlong/java.lang.Long–––浮点型FLOATfloat/java.lang.FloatDOUBLEdouble/java.lang.Double–DECIMAL/NUMERICjava.math.BigDecimal字符串型CHARjava.lang.String固定长度字符串VARCHARjava.lang…...
C# 类和继承(抽象类)
抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...
多种风格导航菜单 HTML 实现(附源码)
下面我将为您展示 6 种不同风格的导航菜单实现,每种都包含完整 HTML、CSS 和 JavaScript 代码。 1. 简约水平导航栏 <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport&qu…...
「全栈技术解析」推客小程序系统开发:从架构设计到裂变增长的完整解决方案
在移动互联网营销竞争白热化的当下,推客小程序系统凭借其裂变传播、精准营销等特性,成为企业抢占市场的利器。本文将深度解析推客小程序系统开发的核心技术与实现路径,助力开发者打造具有市场竞争力的营销工具。 一、系统核心功能架构&…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
【SpringBoot自动化部署】
SpringBoot自动化部署方法 使用Jenkins进行持续集成与部署 Jenkins是最常用的自动化部署工具之一,能够实现代码拉取、构建、测试和部署的全流程自动化。 配置Jenkins任务时,需要添加Git仓库地址和凭证,设置构建触发器(如GitHub…...
go 里面的指针
指针 在 Go 中,指针(pointer)是一个变量的内存地址,就像 C 语言那样: a : 10 p : &a // p 是一个指向 a 的指针 fmt.Println(*p) // 输出 10,通过指针解引用• &a 表示获取变量 a 的地址 p 表示…...
李沐--动手学深度学习--GRU
1.GRU从零开始实现 #9.1.2GRU从零开始实现 import torch from torch import nn from d2l import torch as d2l#首先读取 8.5节中使用的时间机器数据集 batch_size,num_steps 32,35 train_iter,vocab d2l.load_data_time_machine(batch_size,num_steps) #初始化模型参数 def …...
机器学习复习3--模型评估
误差与过拟合 我们将学习器对样本的实际预测结果与样本的真实值之间的差异称为:误差(error)。 误差定义: ①在训练集上的误差称为训练误差(training error)或经验误差(empirical error&#x…...
