详解vue中使用transition和animation的实例代码


Posted in Vue.js onDecember 12, 2020

以前写页面注重在功能上,对于transition和animation是只闻其声,不见其人,对于页面动画效果心理一直痒痒的。最近做活动页面,要求页面比较酷炫,终于有机会认真了解了。

transition:英文过渡的意思,作用是过渡效果;animation:英文活泼、生气、激励,动画片就是animation film,作用是动画效果。

transition在w3school的实例:

//将鼠标悬停在一个 div 元素上,逐步改变表格的宽度从 100px 到 300px:
div
{
 width:100px;
 transition: width 2s;
 -webkit-transition: width 2s; /* Safari */
}
div:hover {width:300px;}

//transition 属性是一个简写属性,用于设置四个过渡属性:

//指定CSS属性的name,transition效果
transition-property
//transition效果需要指定多少秒或毫秒才能完成
transition-duration
//指定transition效果的转速曲线
transition-timing-function
//定义transition效果开始的时候
transition-delay

animation在w3school的实例:

//使用简写属性,将动画与 div 元素绑定
div
{
animation:mymove 5s infinite;
-webkit-animation:mymove 5s infinite; /* Safari 和 Chrome */
}
//animation 属性是一个简写属性,用于设置六个动画属性:
//规定需要绑定到选择器的 keyframe 名称。。
animation-name
//规定完成动画所花费的时间,以秒或毫秒计。
animation-duration
//规定动画的速度曲线。
animation-timing-function
//规定在动画开始之前的延迟。
animation-delay
//规定动画应该播放的次数。
animation-iteration-count
//规定是否应该轮流反向播放动画。
animation-direction

animation使用@keyframes规定动画

@keyframes animationname {
 keyframes-selector {
  css-styles;
 }
}
//必需。定义动画的名称。
animationname
//必需。动画时长的百分比。
//合法的值:
//0-100%
//from(与 0% 相同)
//to(与 100% 相同)
keyframes-selector
//必需。一个或多个合法的 CSS 样式属性。
css-styles

以上是transition和animation的基础知识,最项目使用vue这样主流框架,就用vue使用下transition和animation

1.第一步就是要安装依赖,只安装animation动画库,transiton是直接可以使用的标签,不用去下载依赖

npm install animate.css ?save

2.全局引用一下animation动画库

import animate from 'animate.css'
Vue.use(animate);

3.简单使用一下animation动画库,只要在class加上规定的动画效果名称就可以

<div class="rotateIn"
  style="animation-duration:2s;
   animation-delay:1s;
   animation-iteration-count:1;
   animation-fill-mode:both;">
</div>
<div class="fadeInLeft"
  style="opacity:0;
   animation-duration:3s;
   animation-delay:2s;
   animation-iteration-count:1;
   animation-fill-mode:both;">
</div>
<div class="fadeInUp"
  style="opacity:0;
   animation-duration:3s;
   animation-delay:3s;
   animation-iteration-count:1;
   animation-fill-mode:both;">
</div>

4.正式使用transiton和animation,把知识进阶一下,使用transition标签

1、使用基础的transiton和animation动画

/*v是默认的,在transition中定义name属性
 <transition name=fade>
 v-enter-from就要改成fade-enter-from
*/
<transition>
 <div>hello world</div>
 </transition>
 //使用transition标签时,直接在css中控制
 /*元素进入前效果*/
 .v-enter-from{
 opacity: 0;
 }
 /*元素进入时效果*/
 .v-enter-active{
 /*使用定义的动画*/
  animation: shake 0.3s;
 }
/*元素进入后效果*/
.v-enter-to{
  opacity: 1;
 }
/*元素离开前效果*/
 .v-leave-from{
  opacity: 1;
 }
/*元素离开时效果*/
 .v-leave-active{
/*使用定义的动画*/
  animation: shake 0.3s;
 }
 /*元素离开后效果*/
 .v-leave-to{
  opacity: 0;
 }
 /*定义一个动画效果*/
 @keyframes shake {
  0%{
   transform: translateX(-100px);
 }
  50%{
  transform: translateX(-50px);
 }
 0%{
   transform: translateX(50px);
 }
 }

2、使用trnasition标签的属性,结合animation的动画库

<transition
 transition :duration="{enter:1500,leave:600}"
 enter-from-class="animated"
 enter-active-class="animated"
 enter-to-class="animated"
 leave-from-class="animated fadeOut"
 leave-active-class="animated fadeOut"
 leave-to-class="animated fadeOut"
 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"
 mode="out-in" appear
>
/*enter-from-class就是v-enter-from元素进入前
 animated就是使用animation动画库,fadeOut就是动画效果
 */
 /*before-enter这些就是钩子函数,是滑动进入状态
 mode="out-in"是设定动画是先入后出,还是先出后入
 appear 是设置加载时就要开始动画
 */
// 进入中
//动画进入前
// --------
beforeEnter: function (el) {
 //el就是dom元素
 // ...
},
// 此回调函数是可选项的设置
// 与 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) {
 // ...
}

下面是animation常用的动画效果

fade: {
 title: '淡入淡出',
 fadeIn: '淡入',
 fadeInDown: '向下淡入',
 fadeInDownBig: '向下快速淡入',
 fadeInLeft: '向右淡入',
 fadeInLeftBig: '向右快速淡入',
 fadeInRight: '向左淡入',
 fadeInRightBig: '向左快速淡入',
 fadeInUp: '向上淡入',
 fadeInUpBig: '向上快速淡入',
 fadeOut: '淡出',
 fadeOutDown: '向下淡出',
 fadeOutDownBig: '向下快速淡出',
 fadeOutLeft: '向左淡出',
 fadeOutLeftBig: '向左快速淡出',
 adeOutRight: '向右淡出',
 fadeOutRightBig: '向右快速淡出',
 fadeOutUp: '向上淡出',
 fadeOutUpBig: '向上快速淡出'
},
bounce: {
 title: '弹跳类',
 bounceIn: '弹跳进入',
 bounceInDown: '向下弹跳进入',
 bounceInLeft: '向右弹跳进入',
 bounceInRight: '向左弹跳进入',
 bounceInUp: '向上弹跳进入',
 bounceOut: '弹跳退出',
 bounceOutDown: '向下弹跳退出',
 bounceOutLeft: '向左弹跳退出',
 bounceOutRight: '向右弹跳退出',
 bounceOutUp: '向上弹跳退出'
},
zoom: {
 title: '缩放类',
 zoomIn: '放大进入',
 zoomInDown: '向下放大进入',
 zoomInLeft: '向右放大进入',
 zoomInRight: '向左放大进入',
 zoomInUp: '向上放大进入',
 zoomOut: '缩小退出',
 zoomOutDown: '向下缩小退出',
 zoomOutLeft: '向左缩小退出',
 zoomOutRight: '向右缩小退出',
 zoomOutUp: '向上缩小退出'
},
rotate: {
 title: '旋转类',
 rotateIn: '顺时针旋转进入',
 rotateInDownLeft: '从左往下旋入',
 rotateInDownRight: '从右往下旋入',
 rotateInUpLeft: '从左往上旋入',
 rotateInUpRight: '从右往上旋入',
 rotateOut: '顺时针旋转退出',
 rotateOutDownLeft: '向左下旋出',
 rotateOutDownRight: '向右下旋出',
 rotateOutUpLeft: '向左上旋出',
 rotateOutUpRight: '向右上旋出'
},
flip: {
 title: '翻转类',
 flipInX: '水平翻转进入',
 flipInY: '垂直翻转进入',
 flipOutX: '水平翻转退出',
 flipOutY: '垂直翻转退出'
},
strong: {
 title: '强调类',
 bounce: '弹跳',
 flash: '闪烁',
 pulse: '脉冲',
 rubberBand: '橡皮筋',
 shake: '左右弱晃动',
 swing: '上下摆动',
 tada: '缩放摆动',
 wobble: '左右强晃动',
 jello: '拉伸抖动'
}

结尾,学习用些transition和animation肯定能增加用户体验感,做出一些高大上的网页。

到此这篇关于详解vue中使用transition和animation的实例代码的文章就介绍到这了,更多相关vue使用transition和animation内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Vue.js 相关文章推荐
Vue实现图书管理小案例
Dec 03 Vue.js
实用的 vue tags 创建缓存导航的过程实现
Dec 03 Vue.js
vue+element_ui上传文件,并传递额外参数操作
Dec 05 Vue.js
vue3.0实现插件封装
Dec 14 Vue.js
Vue组件简易模拟实现购物车
Dec 21 Vue.js
vue实现简易的双向数据绑定
Dec 29 Vue.js
通过vue.extend实现消息提示弹框的方法记录
Jan 07 Vue.js
vue常用高阶函数及综合实例
Feb 25 Vue.js
vue中data改变后让视图同步更新的方法
Mar 29 Vue.js
Vue项目打包、合并及压缩优化网页响应速度
Jul 07 Vue.js
vue使用echarts实现折线图
Mar 21 Vue.js
vue项目如何打包之项目打包优化(让打包的js文件变小)
Apr 30 Vue.js
详解如何在vue+element-ui的项目中封装dialog组件
Dec 11 #Vue.js
vue使用exif获取图片经纬度的示例代码
Dec 11 #Vue.js
vue使用exif获取图片旋转,压缩的示例代码
Dec 11 #Vue.js
Vue 实现一个简单的鼠标拖拽滚动效果插件
Dec 10 #Vue.js
vuex页面刷新导致数据丢失的解决方案
Dec 10 #Vue.js
详解vue-cli项目在IE浏览器打开报错解决方法
Dec 10 #Vue.js
Vue+element-ui添加自定义右键菜单的方法示例
Dec 08 #Vue.js
You might like
PHP获取浏览器信息类和客户端地理位置的2个方法
2014/04/24 PHP
PHP的AES加密算法完整实例
2016/07/20 PHP
PHP使用FFmpeg获取视频播放总时长与码率等信息
2016/09/13 PHP
JScript分割字符串示例代码
2013/09/04 Javascript
javascript实现页面内关键词高亮显示代码
2014/04/03 Javascript
JavaScript获取表格(table)当前行的值、删除行、增加行
2015/07/03 Javascript
js中获取jsp表单中radio类型的值简单实例
2016/08/15 Javascript
微信小程序 倒计时组件实现代码
2016/10/24 Javascript
js微信扫描二维码登录网站技术原理
2016/12/01 Javascript
JavaScript &amp; jQuery完美判断图片是否加载完毕
2017/01/08 Javascript
利用n 升级工具升级Node.js版本及在mac环境下的坑
2017/02/15 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
2017/02/19 Javascript
微信公众号菜单配置微信小程序实例详解
2017/03/31 Javascript
jQuery.ajax向后台传递数组问题的解决方法
2017/05/12 jQuery
javascript+jQuery实现360开机时间显示效果
2017/11/03 jQuery
移动端底部导航固定配合vue-router实现组件切换功能
2019/06/13 Javascript
在Vue中使用CSS3实现内容无缝滚动的示例代码
2020/11/27 Vue.js
Django自定义manage命令实例代码
2018/02/11 Python
pycharm 解除默认unittest模式的方法
2018/11/30 Python
在PyTorch中使用标签平滑正则化的问题
2020/04/03 Python
Python opencv相机标定实现原理及步骤详解
2020/04/09 Python
python适合做数据挖掘吗
2020/06/16 Python
详解Pytorch显存动态分配规律探索
2020/11/17 Python
python实现马丁策略回测3000只股票的实例代码
2021/01/22 Python
利用CSS的Sass预处理器(框架)来制作居中效果
2016/03/10 HTML / CSS
借助HTML5 Canvas API制作一个简单的猜字游戏
2016/03/25 HTML / CSS
城建学院毕业生自荐信
2014/01/31 职场文书
乡镇网格化管理实施方案
2014/03/23 职场文书
班级心理活动总结
2014/07/04 职场文书
单方离婚协议书范本2014
2014/10/28 职场文书
社会实践活动总结
2015/02/05 职场文书
建筑工地资料员岗位职责
2015/04/13 职场文书
离婚案件原告代理词
2015/05/23 职场文书
cf战队宣传语
2015/07/13 职场文书
Mysql数据库命令大全
2021/05/26 MySQL
JavaScript 与 TypeScript之间的联系
2021/11/27 Javascript