Vue学习之动画小结(六)
2019-08-14 09:58:50来源:博客园 阅读 ()
一、Vue中实现动画的方式:https://cn.vuejs.org/v2/guide/transitions.html
Vue 在插入、更新或者移除 DOM 时,提供多种不同方式的应用过渡效果。
包括以下工具:
- 在 CSS 过渡和动画中自动应用 class
- 可以配合使用第三方 CSS 动画库,如 Animate.css
- 在过渡钩子函数中使用 JavaScript 直接操作 DOM
- 可以配合使用第三方 JavaScript 动画库,如 Velocity.js
二、使用过渡类名实现动画:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width= , initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>donghua</title> <link rel="stylesheet" href="./lib/animate.css" /> <style> /* 2.自定义两组样式,来控制 transition 内部的元素实现动画 */ /* v-enter【这是一个时间点】是进入之前,元素的起始状态,此时还没有开始进入 */ /* v-leave-to 【这是一个时间点】 是动画离开之后,离开的终止状态,此时,元素 动画已经结束了*/ .v-enter, .v-leave-to { opacity: 0; /* 沿着X轴 */ /* transform: translateX(150px); */ /* 沿着Y轴 */ transform: translateY(150px); } /*v-enter-active【入场动画的时间段】 */ /* v-leave-active【离场动画的时间段】 */ .v-enter-active, .v-leave-active { transition: all 0.8s ease; } </style> </head> <body> <script src="./lib/vue.js"></script> <div id="app"> <input type="button" value="toggle" @click="flag=!flag" /> <!-- 需求:点击按钮,让H3显示,再点击,让H3隐藏 --> <!-- 1、使用 transition 元素,把需要被动画控制的元素,包裹起来 --> <transition> <h3 v-if="flag">这是一个H3</h3> </transition> </div> <script> var vm = new Vue({ el: "#app", data: { flag: false } }); </script> </body> </html>
三、使用animate.css类实现动画:
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <meta name="viewport" content="width= , initial-scale=1.0" /> <meta http-equiv="X-UA-Compatible" content="ie=edge" /> <title>donghua</title> <link rel="stylesheet" href="./lib/animate.css" /> </head> <body> <script src="./lib/vue.js"></script> <div id="app"> <input type="button" value="toggle" @click="flag=!flag" /> <!-- 使用 :duration="{ enter :200, leave: 400}"来分别设置 入场的时长和 离场的时长 --> <transition enter-active-class="bounceIn" leave-active-class="bounceOut" :duration="{ enter :200, leave: 400}" > <h3 v-if="flag" class="animated">这是一个H3</h3> </transition> </div> <script> var vm = new Vue({ el: "#app", data: { flag: false } }); </script> </body> </html>
四、使用钩子函数:
可以在属性中声明 JavaScript 钩子
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8" /> <title>donghua</title> <style> /* 定义动画小球 */ .ball { width: 15px; height: 15px; border-radius: 50%; background-color: red; } </style> </head> <body> <script src="./lib/vue.js"></script> <div id="app"> <input type="button" value="从碗里出去" @click="flag=!flag" /> <!-- 1.使用 transition 元素把 小球包裹起来 --> <transition @before-enter="beforeEnter" @enter="enter" @after-enter="afterEnter" > <div class="ball" v-show="flag"></div> </transition> </div> <script> var vm = new Vue({ el: "#app", data: { flag: false }, methods: { //动画钩子函数的第一个参数:el,表示 要执行动画的那个DOM元素,是个原生的JS DOM对象 //大家可以认为,el是通过docunment.getElementById('')方式获取到的原生JS DOM对象 beforeEnter(el) { //beforeEnter 表示动画入场之前,此时,动画尚未开始,可以在其中设置元素开始动画之前的起始样式 // 设置小球开始动画之前的起始位置 el.style.transform = "translate(0,0)"; }, enter(el, done) { // 这句话没有实际的作用,但是如果不写,出不来动画效果; //可以认为 el.offsetWidth 会强制动画刷新 el.offsetWidth; //enter 表示动画开始之后的样式,这里,可以设置小球完成动画之后的,结束状态 el.style.transform = "translate(150px,450px)"; el.style.transition = "all 1s ease"; //这里的 done,起始就是 afterEnter 这个函数,也就是说 done 是 afterEnter 函数的引用 done(); }, afterEnter(el) { //动画完成后,会调用 afterEnter // console.log("ok"); //这句话,第一个功能就是控制小球的显示与隐藏; //第二个功能:直接跳过后半场动画,让flag 标识符 直接变为 false; //当第二次再点击 按钮的时候,flag: false---> true this.flag = !this.flag; //Vue把一个完整的动画,使用钩子函数,拆分为了两部分: //我们使用flag 标识符,来表示动画的切换flag: false--> true -->false } } }); </script> </body> </html>
<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>
原文链接:https://www.cnblogs.com/21-forever/p/11107351.html
如有疑问请与原作者联系
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- vue.js开发环境搭建教程 2020-03-16
- Vue input控件通过value绑定动态属性及修饰符的方法 2020-03-05
- 详解Webstorm 新建.vue文件支持高亮vue语法和es6语法 2020-02-07
- vue路由跳转时判断用户是否登录功能的实现 2020-01-17
- vue-cli中打包图片路径错误的解决方法 2020-01-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash