网站首页 > 技术文章 正文
过渡系统是Vue.js为DOM动画效果提供的一个特性,
它能在元素从DOM中插入或移除时触发你的CSS过渡(transition)和动画(animation),也就是说在DOM元素发生变化时为其添加特定的class类名,从而产生过渡效果。
除了CSS过渡外,Vue.js的过渡系统也支持javascript的过渡,
通过暴露过渡系统的钩子函数,我们可以在DOM变化的特定时机对其进行属性的操作,产生动画效果。
SS过渡的用法
首先举一个例子来说明CSS过渡系统的使用方式:
<div v-if="show" transition="my-startup"></div>
var vm = new Vue({
el : '#app',
data: {
show : false
}
});
首先在模板中用transition绑定一个DOM元素,并且使用v-if指令使元素先处于未被编译状态。然后在控制台内手动调用vm.show = true, 就可以看到DOM元素最后输出为:
<div class="my-startup-transition"></div>
我们可以看到在DOM元素完成编译后,过渡系统自动给元素添加了一个my-startup-transition的class类名。
CSS过渡钩子函数
Vue.js提供了在插入或DOM元素时类名变化的钩子函数,可以通过Vue.transition('name', {})的方式来执行具体的函数操作。
显示声明过渡类型
Vue.js可以指定过渡元素监听的结束事件的类型, 例如:
Vue.transition('done-type', {
type: 'animation'
})
此时Vue.js就只监听元素的animationend事件,避免元素上还存在transition时导致的结束事件触发不一致。
自定义过渡类名
除了使用默认的类名*-enter, *-leave外,Vue.js也允许我们自定义过渡类名,例如:
Vue.transition('my-startup', {
enterClass: 'fadeIn',
leaveClass: 'fadeOut'
})
我们可以通过上述钩子函数的例子,观测元素的类名变化:
Vue.js官方推荐了一个CSS动画库,animate.css,配合自定义过渡类名使用,
可以达到非常不错的效果。
【B站推荐】Vue全套视频教程,从vue2.0到vue3.0一套全覆盖,前端必会的框架教程包含4套优质VUE练手项目,从零开始入门到精通,一套搞定。_哔哩哔哩_bilibili
猜你喜欢
- 2024-10-24 初探animation中steps()属性(animation steps属性)
- 2024-10-24 HTML5(九)——超强的 SVG 动画(htmlsvg动画代码)
- 2024-10-24 自定义日历(二)(自定义日历控件)
- 2024-10-24 Flutter简单动画Animation运用(flutter 视频教程)
- 2024-10-24 css3中动画animation中的steps()函数
- 2024-10-24 移动端渲染原理浅析(移动端渲染原理浅析设计)
- 2024-10-24 iOS 事件处理机制与图像渲染过程(简述ios中的事件响应机制)
- 2024-10-24 Android 开机问题分析(android无法开机)
- 2024-10-24 GoogleCTF + zer0ptsCTF + ImaginaryCTF 2023 笔记
- 2024-10-24 决战“金三银四”,中高级Web前端大厂面试秘籍:CSS篇
- 1507℃桌面软件开发新体验!用 Blazor Hybrid 打造简洁高效的视频处理工具
- 510℃Dify工具使用全场景:dify-sandbox沙盒的原理(源码篇·第2期)
- 487℃MySQL service启动脚本浅析(r12笔记第59天)
- 467℃服务器异常重启,导致mysql启动失败,问题解决过程记录
- 465℃启用MySQL查询缓存(mysql8.0查询缓存)
- 445℃「赵强老师」MySQL的闪回(赵强iso是哪个大学毕业的)
- 423℃mysql服务怎么启动和关闭?(mysql服务怎么启动和关闭)
- 420℃MySQL server PID file could not be found!失败
- 最近发表
- 标签列表
-
- c++中::是什么意思 (83)
- 标签用于 (65)
- 主键只能有一个吗 (66)
- c#console.writeline不显示 (75)
- pythoncase语句 (81)
- es6includes (73)
- windowsscripthost (67)
- apt-getinstall-y (86)
- node_modules怎么生成 (76)
- chromepost (65)
- c++int转char (75)
- static函数和普通函数 (76)
- el-date-picker开始日期早于结束日期 (70)
- js判断是否是json字符串 (67)
- checkout-b (67)
- localstorage.removeitem (74)
- vector线程安全吗 (70)
- & (66)
- java (73)
- js数组插入 (83)
- linux删除一个文件夹 (65)
- mac安装java (72)
- eacces (67)
- 查看mysql是否启动 (70)
- 无效的列索引 (74)