您好,登錄后才能下訂單哦!
本篇內容主要講解“vue怎么實現翻牌動畫”,感興趣的朋友不妨來看看。本文介紹的方法操作簡單快捷,實用性強。下面就讓小編來帶大家學習“vue怎么實現翻牌動畫”吧!
常用于大屏訂單數量展示
利用css writing-mode: vertical-rl 使數字垂直排列
利用css transform 使數字滾動
根據css先讓數字垂直排列,總共設置8列
根據組件傳遞的數值,如果不滿8位,遞歸補零
補零之后,循環根據 translate(-50%, -${numberArr[index] * 10}%,查看動畫
<template> <div class="chartNum"> <div class="box-item"> <li :class="{'number-item':!isNaN(item),'mark-item':!isNaN(item)}" v-for="(item,index) in orderNum" :key="index"> <span v-if="!isNaN(item)"> <i ref="numberItem">0123456789</i> </span> <span class="comma" v-else>{{item}}</span> </li> </div> </div> </template> <script> export default { 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(){ const numberItems = this.$refs.numberItem // 拿到數字的ref,計算元素數量 const numberArr = this.orderNum.filter(item => !isNaN(item)) // 結合css,讓文字滾動起來 for (let index = 0; index < numberItems.length; index++) { const elem = 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"補位 } else if(num.length == 8){ this.orderNum = num.split('') } else{ // 數據量超過8位 this.$message.error('數據量過大'); } this.setNumberTransform(); } } } </script> <style scoped lang="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-repeat center center; background-size: 100% 100%; list-style: none; margin-right: 5px; border-radius:4px; border:1px solid rgba(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: transform 1s ease-in-out; letter-spacing: 10px; } } } .number-item:last-child { margin-right: 0; } </style>
到此,相信大家對“vue怎么實現翻牌動畫”有了更深的了解,不妨來實際操作一番吧!這里是億速云網站,更多相關內容可以進入相關頻道進行查詢,關注我們,繼續學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。