<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          花10分鐘用Vue 實現(xiàn) 1 個數(shù)字滾動效果

          共 2544字,需瀏覽 6分鐘

           ·

          2021-10-30 11:16

          作者:RadiumAg

          https://juejin.cn/post/7019597165538312200

          1. 前言

          快要雙十一了,然后公司要制作一個展示的電子大屏,其中總金額的數(shù)字需要滾動的切換效果,類似于這樣:

          動畫.gif


          2. 思考&實現(xiàn)

          2.1 思考

          誒,作為十年代碼經(jīng)驗常年摸魚的我,想起來vue中的transition-group可以實現(xiàn)類似的效果,首先來看看官網(wǎng)的案例[1]效果:

          2.gif

          2.2 實現(xiàn)

          于是我們先參照官網(wǎng)實現(xiàn)一個簡單的效果:

          3.gif

          由于項目比較簡單,所以這里采用的是cdn方式,代碼如下:

          <html lang="en">
          <head> <meta charset="UTF-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <style> * { margin: 0px; padding: 0px; }
          body, html { min-width: 1920px; min-height: 1080px; width: 100%; height: 100%; }
          #app { position: relative; }
          .amount { color: gold; font-size: 85px; display: flex; justify-content: center; }
          .list-enter-active, .list-leave-active { transition: transform 1s ease, opacity 1s ease; }
          .list-enter-from { opacity: 0; transform: translateY(50%); }
          .list-leave-to { opacity: 0; transform: translateY(-50%); }style>
          <title>Documenttitle>head>
          <body id="app"> <div class="amount"> <div style="display: flex;"> <span>span> <transition-group name="list" tag="p"> <p style="display: inline-block;" v-for="(item , index) in todayAmountComputed" :key="item + index"> {{item}}p> transition-group> div> div>body>
          <script src="https://unpkg.com/vue@next" defer>script>
          <script> document.addEventListener('DOMContentLoaded', () => { Vue.createApp({ data() { return { todayAmount: '0', platformSales1: 4090013, } }, computed: { todayAmountComputed() { return this.todayAmount.split(''); }, }, mounted() { setInterval(() => { if (this.todayAmount === '0') { this.todayAmount = '1000'; } this.todayAmount = '' + Math.floor(Math.random() * 10000); }, 2000); }, }).mount('#app'); })script>
          html>
          復(fù)制代碼

          現(xiàn)在離完整的效果,其實只差一步了,現(xiàn)在由于原來的數(shù)字會占用空間,所以導(dǎo)致離開的進(jìn)入的沒有在同一直線上,所以,我們加上position:absoulte,再使用left定位將它們固定在合理的位置上,代碼如下:


          "app">
          ????<div?id="amount">
          ????????<div?style="display:?flex;">
          ????????????<span>span>

          ????????????<transition-group?name="list"?tag="p"?style="position:?relative;">
          ????????????????<p?style="display:?inline-block;position:?absolute;"?v-for="(item?,?index)?????????????????????in?todayAmountComputed"
          ????????????????????:style="{
          ????????????????????left:??index?*?50?+?'px',
          ????????????????????}"
          ?:key="item?+?index">

          ????????????????????{{item}}p>
          ????????????transition-group>
          ????????div>
          ????div>
          </body>

          復(fù)制代碼

          此時就會呈現(xiàn)出下列效果:

          4.gif

          哇咔咔,很接近了,有木有。

          3. 注入靈魂

          嘿嘿嘿,最后就是注入靈魂,給每個數(shù)字添加一點點延遲:

          "app">
          ????<div?id="amount">
          ????????<div?style="display:?flex;">
          ????????????<span>span>

          ????????????<transition-group?name="list"?tag="p"?style="position:?relative;">
          ????????????????<p?style="display:?inline-block;position:?absolute;"?v-for="(item?,?index)?????????????????????in?todayAmountComputed"
          ????????????????????:style="{
          ????????????????????left:??index?*?50?+?'px',
          ????????????????????'transition-delay':?0.1?*?index?+?'s'
          ????????????????????}"
          ?:key="item?+?index">

          ????????????????????{{item}}p>
          ????????????transition-group>
          ????????div>
          ????div>
          </body>
          復(fù)制代碼

          最終效果如下:

          5.gif

          最后附上最終代碼鏈接參考[2]:

          4. 總結(jié)

          不過如此(熊貓頭檸檬精算了表情包)_檸檬精_不過如此_熊貓_算了表情

          鏈接:

          [1]https://v3.cn.vuejs.org/guide/transitions-list.html

          [2]https://gitee.com/Agrement/javascript/blob/master/%E6%8E%98%E9%87%91/index.html



          瀏覽 67
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  大香蕉在线视频网 | 成人先锋影音AV黄色电影网站 | 圆产精品久久久久久久久久久新郎 | 另类国产ts一区二区三区 | 苍井さくら在线一区二区 |