vue怎么实现翻牌动画(vue,开发技术)

时间:2024-05-05 11:01:43 作者 : 石家庄SEO 分类 : 开发技术
  • TAG :

vue怎么实现翻牌动画

应用场景

常用于大屏订单数量展示

原理

  • 利用css writing-mode: vertical-rl 使数字垂直排列

  • 利用css transform 使数字滚动

实现思路

  • 根据css先让数字垂直排列,总共设置8列

  • 根据组件传递的数值,如果不满8位,递归补零

  • 补零之后,循环根据 translate(-50%, -${numberArr[index] * 10}%,查看动画

<template><divclass="chartNum"><divclass="box-item"><li:class="{'number-item':!isNaN(item),'mark-item':!isNaN(item)}"v-for="(item,index)inorderNum":key="index"><spanv-if="!isNaN(item)"><iref="numberItem">0123456789</i></span><spanclass="comma"v-else>{{item}}</span></li></div></div></template><script>exportdefault{name:"hChartNum",props:{num:{type:Number,default:1123}},data(){return{orderNum:['0','0','0','0','0','0','0','0'],//默认订单总数}},mounted(){setTimeout(()=>{this.toOrderNum(this.num)//这里输入数字即可调用},500);},methods:{//设置文字滚动setNumberTransform(){constnumberItems=this.$refs.numberItem//拿到数字的ref,计算元素数量constnumberArr=this.orderNum.filter(item=>!isNaN(item))//结合css,让文字滚动起来for(letindex=0;index<numberItems.length;index++){constelem=numberItems[index];elem.style.transform=`translate(-50%,-${numberArr[index]*10}%)`}},//处理订单数字toOrderNum(num){num=num.toString();if(num.length<8){num='0'+num;//未满8位,补零this.toOrderNum(num);//递归添加"0"补位}elseif(num.length==8){this.orderNum=num.split('')}else{//数据量超过8位this.$message.error('数据量过大');}this.setNumberTransform();}}}</script><stylescopedlang="less">.box-item{position:relative;height:100px;font-size:54px;line-height:41px;text-align:center;list-style:none;color:#2D7CFF;writing-mode:vertical-lr;text-orientation:upright;-moz-user-select:none;-webkit-user-select:none;/*webkit浏览器*/-ms-user-select:none;/*IE10*/-khtml-user-select:none;/*早期浏览器*/user-select:none;}/*默认逗号设置*/.number-item{width:10px;height:100px;margin-right:5px;line-height:10px;font-size:48px;position:relative;&>span{position:absolute;width:100%;bottom:0;writing-mode:vertical-rl;text-orientation:upright;}}/*滚动数字设置*/.number-item{width:41px;height:75px;background:url(./img/bg.jpg)no-repeatcentercenter;background-size:100%100%;list-style:none;margin-right:5px;border-radius:4px;border:1pxsolidrgba(221,221,221,1);&>span{position:relative;display:inline-block;margin-right:10px;width:100%;height:100%;writing-mode:vertical-rl;text-orientation:upright;overflow:hidden;&>i{font-style:normal;position:absolute;top:11px;left:50%;transform:translate(-50%,0);transition:transform1sease-in-out;letter-spacing:10px;}}}.number-item:last-child{margin-right:0;}</style>
 </div> <div class="zixun-tj-product adv-bottom"></div> </div> </div> <div class="prve-next-news">
本文:vue怎么实现翻牌动画的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:怎么利用MySQL添加联合唯一索引下一篇:

18 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18