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 相关文章推荐
JS.elementGetStyle(element, style)应用示例
Sep 24 Javascript
JavaScript程序员应该知道的45个实用技巧
Mar 04 Javascript
jquery中each遍历对象和数组示例
Aug 05 Javascript
javascript和jquery实现设置和移除文本框默认值效果代码
Jan 13 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
Jun 17 Javascript
jquery实现的代替传统checkbox样式插件
Jun 19 Javascript
jQuery实现简单的点赞效果
May 29 Javascript
javascript自动恢复文本框点击清除后的默认文本
Jan 12 Javascript
JavaScript中数组的各种操作的总结(必看篇)
Feb 13 Javascript
JS实现的简单四则运算计算器功能示例
Sep 27 Javascript
使用vue的transition完成滑动过渡的示例代码
Jun 25 Javascript
vue视频播放暂停代码
Nov 08 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
php调用mysql存储过程
2007/02/14 PHP
解析数组非数字键名引号的必要性
2013/08/09 PHP
php的闭包(Closure)匿名函数详解
2015/02/22 PHP
typecho插件编写教程(四):插件挂载
2015/05/28 PHP
PHP正则表达式过滤html标签属性(DEMO)
2016/05/04 PHP
PHP Callable强制指定回调类型的方法
2016/08/30 PHP
PHP实现的链式队列结构示例
2017/09/15 PHP
HTML页面登录时的JS验证方法
2014/05/28 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
基于JavaScript实现验证码功能
2017/04/01 Javascript
angular过滤器实现排序功能
2017/06/27 Javascript
KOA+egg.js集成kafka消息队列的示例
2018/11/09 Javascript
JS中创建自定义类型的常用模式总结【工厂模式,构造函数模式,原型模式,动态原型模式等】
2019/01/19 Javascript
javascript+Canvas实现画板功能
2020/06/23 Javascript
如何在vue-cli中使用css-loader实现css module
2021/01/07 Vue.js
[56:13]DOTA2-DPC中国联赛定级赛 LBZS vs Phoenix BO3第一场 1月10日
2021/03/11 DOTA
python安装以及IDE的配置教程
2015/04/29 Python
python实现线程池的方法
2015/06/30 Python
RC4文件加密的python实现方法
2015/06/30 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
scrapy爬虫实例分享
2017/12/28 Python
Python程序员面试题 你必须提前准备!(答案及解析)
2018/01/23 Python
Python3操作MongoDB增册改查等方法详解
2020/02/10 Python
django项目中新增app的2种实现方法
2020/04/01 Python
Python Pandas list列表数据列拆分成多行的方法实现
2020/12/14 Python
Python机器学习工具scikit-learn的使用笔记
2021/01/28 Python
香港草莓网土耳其网站:Strawberrynet TR
2017/03/02 全球购物
奉献家乡演讲稿
2014/09/16 职场文书
个人投资合作协议书
2014/10/12 职场文书
出纳年终工作总结2014
2014/12/05 职场文书
2014年会计人员工作总结
2014/12/10 职场文书
农民工工资承诺书大全
2015/05/04 职场文书
劳保用品管理制度范本
2015/08/06 职场文书
python爬取某网站原图作为壁纸
2021/06/02 Python
Python开发简易五子棋小游戏
2022/05/02 Python