vue+animation实现翻页动画


Posted in Javascript onJune 29, 2020

本文实例为大家分享了vue+animation实现翻页动画展示的具体代码,供大家参考,具体内容如下

前端在做数据展示的时候,可能提留页面时间较长,导致数据不能及时更新,你可以定时更新,也可以做一个假数据 给用户视觉上的体验,接下来就是第二种,假数据,它用了C3 animation 实现了一个翻页动画。

vue+animation实现翻页动画

第一种是单独运动

<template>
 <div>
 <div>
  <ul>
  <li v-for="(item,i) in NumberList" :key="i" ><a :class="[item.isMove ? 'move-an' : '']">{{item.num}}</a></li>
  </ul>
 </div>
 </div>
</template>
<script>
export default {
 data(){
 return {
  NumberList:'',
  Number:108847,
 }
 },
 mounted(){
 let arr = String(this.Number).split('')
 this.NumberList=[]
 arr.forEach(item => {
  const model = {};
  model.isMove = false;
  model.num = item;
  this.NumberList.push(model);
 });
 setInterval(() =>{
  this.Number=this.Number+1;
  let data = String(this.Number);
  let arr = data.split("");
  arr.forEach((item, index) => {
  if (item !== this.NumberList[index].num) {
   this.NumberList[index].isMove = true
  }
  });
 }, 10000)
 },
 watch: {
 Number() {
  setTimeout(() =>{
  let data = String(this.Number);
  let arr = data.split("");
  this.NumberList.forEach((item, index) => {
  this.NumberList[index].num = arr[index];
  });
  }, 500);
  setTimeout(() =>{
  this.NumberList.forEach((item, index) => {
  this.NumberList[index].isMove = false
  });
  }, 1000);
 }
 },
 methods:{
 }
}
</script>
<style lang="" scoped>
 h1{
 text-align:center;
 }
 ul{
 display: flex;
 
 }
 li{
 list-style: none;
 width:50px;height:80px;
 background: red;
 margin-right: 10px;
 text-align: center;
 line-height: 80px;
 font-size:20px;
 color:#ffffff;
 position: relative;
 }
 a {
 position: absolute;
 top: 3px;
 color: #ffffff;
 }
 .move-an {
 animation:mymove 1s infinite linear;
 -webkit-animation:mymove 1s infinite linear;
 }
 @keyframes mymove {
 0% {top: 3px;}
 25% {top: -40px;}
 48% {top: -80px;}
 49% {top: -80px; opacity: 0}
 50% {top: 80px;}
 51% {top: 80px;opacity: 1; }
 100% {top: 3px;}
 }
</style>

第二种是整体运动 0-9循环一边

<template>
 <div class="main">
 <div v-for="(item,i) in NumberList" class="move-num" :key="i">
  <div>
  <div style="visibility:hidden;position: static">
   <span v-for="(list, i) in item.num" :key="i" class="num-move">{{list}}</span>
  </div>
  <a :class="[isMove === true ? 'move-an' : '']">
   <span v-for="(list, i) in item.num" :key="i" class="num-move">{{list}}</span>
  </a>
  </div>
 </div>
 </div>
</template>
<script>
export default {
 data(){
 return {
  isMove:false,
  NumberList:[],
  Number:108847,
  numModels: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9],
 }
 },
 mounted(){
 this.handdleDate()
 setInterval(() => {
  this.handdleDate()
 }, 10000)
 },
 methods:{
 handdleDate(){
  let arr = String(this.Number).split('')
  this.NumberList=[]
  arr.forEach(item => {
  
  const model = {}
  const baseArr = JSON.parse(JSON.stringify(this.numModels))
  model.isMove = false;
  for (let i = 0; i < parseInt(item) + 1; i++) {
   baseArr.push(i)
  }
  model.num = baseArr;
  this.NumberList.push(model);
  this.isMove = true;
   setTimeout(() => {
   this.isMove = false
  }, 3000)
  });
 }
 }
}
</script>
<style lang="" scoped>
.main{
 display: flex;
}
.move-num{
 width:30px;height:40px;
 background:red;
 overflow: hidden;
 margin-right:10px;
 line-height: 40px;
 color:#fff;
 position: relative;
 overflow: hidden;
}
.move-num div {
 position: absolute;
 width: 100%;
 height: auto;
 
 }
.move-num div a {
 color: #ffffff;
 display: block;
 position: absolute;
 left: 10px;
 bottom: calc(100% - 45px);
}
.num-move {
 width: 100%;
 display: block;
 margin: 3px 0;
}
.move-an {
 animation:mymove 3s infinite linear forwards;
 -webkit-animation:mymove 3s infinite linear forwards;
}
.num-move {
 width: 100%;
 display: block;
 margin: 3px 0;
}
@keyframes mymove {
 0% {bottom: 3px;}
 100% {bottom: calc(100% - 40px)}
}
</style>

关于vue.js组件的教程,请大家点击专题vue.js组件学习教程进行学习。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
让插入到 innerHTML 中的 script 跑起来的实现代码
Jul 01 Javascript
javascript EXCEL 操作类代码
Jul 30 Javascript
jQuery timers计时器简单应用说明
Oct 28 Javascript
js 创建快捷方式的代码(fso)
Nov 19 Javascript
js+jquery常用知识点汇总
Mar 03 Javascript
javascript图片预加载完整实例
Dec 10 Javascript
AngularJS 路由和模板实例及路由地址简化方法(必看)
Jun 24 Javascript
EasyUI为Numberbox添加blur事件的方法
Mar 05 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
Angular 实现输入框中显示文章标签的实例代码
Nov 07 Javascript
详解在不使用ssr的情况下解决Vue单页面SEO问题
Nov 08 Javascript
js实现淘宝浏览商品放大镜功能
Oct 28 Javascript
vue+element实现图片上传及裁剪功能
Jun 29 #Javascript
vue实现匀速轮播效果
Jun 29 #Javascript
vant实现购物车功能
Jun 29 #Javascript
js实现随机点名器精简版
Jun 29 #Javascript
Node.js中出现未捕获异常的处理方法
Jun 29 #Javascript
在Vue中使用antv的示例代码
Jun 29 #Javascript
vue实现一个6个输入框的验证码输入组件功能的实例代码
Jun 29 #Javascript
You might like
不用iconv库的gb2312与utf-8的互换函数
2006/10/09 PHP
session在PHP大型web应用中的使用
2011/06/25 PHP
基于php导出到Excel或CSV的详解(附utf8、gbk 编码转换)
2013/06/25 PHP
php安装php_rar扩展实现rar文件读取和解压的方法
2016/11/17 PHP
Zend Framework框架实现类似Google搜索分页效果
2016/11/25 PHP
通过js脚本复制网页上的一个表格的不错实现方法
2006/12/29 Javascript
语义化 H1 标签
2008/01/14 Javascript
jquery选择器使用详解
2014/04/08 Javascript
在JS数组特定索引处指定位置插入元素
2014/07/27 Javascript
Javascript 正则表达式实现为数字添加千位分隔符
2015/03/10 Javascript
javascript模拟C#格式化字符串
2015/08/26 Javascript
jQuery实现产品对比功能附源码下载
2016/08/09 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
2016/08/16 Javascript
80%应聘者都不及格的JS面试题
2017/03/21 Javascript
jQuery实现获取table中鼠标click点击位置行号与列号的方法
2017/10/09 jQuery
jQuery基于Ajax实现读取XML数据功能示例
2018/05/31 jQuery
Vuex modules模式下mapState/mapMutations的操作实例
2019/10/17 Javascript
解决Echarts2竖直datazoom滑动后显示数据不全的问题
2020/07/20 Javascript
[07:09]2014DOTA2国际邀请赛-Newbee再次发威成功晋级决赛
2014/07/19 DOTA
[04:19]DOTA2亚洲邀请赛 现场花絮
2015/03/11 DOTA
[42:50]NB vs VP 2018国际邀请赛小组赛BO2 第二场 8.18
2018/08/19 DOTA
Python中的默认参数实例分析
2018/01/29 Python
对python中两种列表元素去重函数性能的比较方法
2018/06/29 Python
Python 判断奇数偶数的方法
2018/12/20 Python
python代码xml转txt实例
2020/03/10 Python
python 画条形图(柱状图)实例
2020/04/24 Python
Python读写csv文件流程及异常解决
2020/10/20 Python
HTML5 input新增type属性color颜色拾取器的实例代码
2018/08/27 HTML / CSS
年会搞笑主持词
2014/03/27 职场文书
2014年十一国庆向国旗敬礼寄语
2014/04/11 职场文书
节能环保口号
2014/06/12 职场文书
2014最新离职证明范本
2014/09/12 职场文书
领导批评与自我批评范文
2014/10/16 职场文书
2015年评职称个人工作总结
2015/10/15 职场文书
哪类餐饮行业,最适合在高校创业?
2019/08/19 职场文书
SpringBoot接入钉钉自定义机器人预警通知
2022/07/15 Java/Android