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 switch case default 的用法示例介绍
Oct 23 Javascript
深入解析JavaScript框架Backbone.js中的事件机制
Feb 14 Javascript
jquery移除了live()、die(),新版事件绑定on()、off()的方法
Oct 26 Javascript
如何编写jquery插件
Mar 29 jQuery
jquery与js实现全选功能的区别
Jun 11 jQuery
简单实现js鼠标跟随效果
Aug 02 Javascript
js中apply与call简单用法详解
Nov 06 Javascript
微信小程序实践之动态控制组件的显示/隐藏功能
Jul 18 Javascript
vue单页面实现当前页面刷新或跳转时提示保存
Nov 02 Javascript
亲自动手实现vue日历控件
Jun 26 Javascript
小程序如何获取多个formId实现详解
Sep 20 Javascript
JavaScript组合模式---引入案例分析
May 23 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中随机显示图片的函数代码
2011/06/23 PHP
PHP convert_cyr_string()函数讲解
2019/02/13 PHP
Javascript new关键字的玄机 以及其它
2010/08/25 Javascript
jQuery的Each比JS原生for循环性能慢很多的原因
2016/07/05 Javascript
想学习javascript JS和jQuery哪个重要 先学哪个
2016/12/11 Javascript
vue项目实战总结篇
2018/02/11 Javascript
JavaScript中使用import 和require打包后实现原理分析
2018/03/07 Javascript
聊聊JS动画库 Velocity.js的使用
2018/03/13 Javascript
原生JavaScript实现remove()和recover()功能示例
2018/07/24 Javascript
解决VUE mounted 钩子函数执行时 img 未加载导致页面布局的问题
2020/07/27 Javascript
python二分法实现实例
2013/11/21 Python
pymongo为mongodb数据库添加索引的方法
2015/05/11 Python
玩转python爬虫之爬取糗事百科段子
2016/02/17 Python
Python创建xml文件示例
2017/03/22 Python
Python pyinotify日志监控系统处理日志的方法
2018/03/08 Python
Python实现的文本对比报告生成工具示例
2018/05/22 Python
Python爬虫实现抓取京东店铺信息及下载图片功能示例
2018/08/07 Python
Python面向对象之反射/自省机制实例分析
2018/08/24 Python
Python使用Flask-SQLAlchemy连接数据库操作示例
2018/08/31 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Tensorflow实现多GPU并行方式
2020/02/03 Python
Python matplotlib实时画图案例
2020/04/23 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
用html5实现语音搜索框的方法
2014/03/18 HTML / CSS
Mankind西班牙男士护肤品网站:购买皮肤护理、护发和剃须
2017/04/27 全球购物
New Balance波兰官方商城:始于1906年,百年慢跑品牌
2017/08/15 全球购物
什么是虚拟内存?虚拟内存有什么优势?
2012/02/19 面试题
什么是JNDI的上下文?如何初始化JNDI上下文
2012/03/10 面试题
预备党员思想汇报范文
2014/01/11 职场文书
中学清明节活动总结
2014/07/04 职场文书
走群众路线学习笔记
2014/11/06 职场文书
介绍信范文大全
2015/05/07 职场文书
话题作文之自信作文
2019/11/15 职场文书
解决Vue+SpringBoot+Shiro跨域问题
2021/06/09 Vue.js
解决mysql的int型主键自增问题
2021/07/15 MySQL
Python Matplotlib绘制动画的代码详解
2022/05/30 Python