最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue?transition組件簡(jiǎn)單實(shí)現(xiàn)數(shù)字滾動(dòng)

 更新時(shí)間:2022年09月22日 11:12:25   作者:田八  
這篇文章主要為大家介紹了Vue?transition組件簡(jiǎn)單實(shí)現(xiàn)數(shù)字滾動(dòng)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

實(shí)現(xiàn)效果

Scrip

<template>
  <button @click="addCount">點(diǎn)我滾動(dòng)數(shù)字</button>
  <div class="roll-container">
    <transition name="roll">
      <div class="roll-number" :key="count">{{ count }}</div>
    </transition>
  </div>
</template>
<script>
import { defineComponent, ref } from 'vue';
export default defineComponent({
  setup() {
    const count = ref(0);
    let click_time = Date.now();
    function addCount() {
      if (Date.now() - click_time < 300) return;
      click_time = Date.now();
      count.value += 1;
    }
    return {
      count,
      addCount,
    };
  },
});
</script>
<style>
.roll-container {
  position: relative;
  text-align: center;
  font-size: 120px;
  line-height: 1em;
  color: #fff;
  height: 1em;
  min-width: 1em;
  max-width: 3em;
  background: #000000;
  overflow: hidden;
}
.roll-number {
  /* position: absolute; */
  /* top: 0; */
  width: 100%;
}
.roll-enter-active,
.roll-leave-active {
  transition: all .3s;
  position: absolute;
  top: 0;
}
.roll-leave-to {
  top: -1em;
}
.roll-enter-active {
  top: 1em;
}
.roll-enter-to {
  top: 0;
}
</style>
      

使用vuetransition組件,來(lái)實(shí)現(xiàn)一個(gè)數(shù)字滾動(dòng)效果,其實(shí)不僅可以是數(shù)字滾動(dòng),還可以是文字、段落滾動(dòng),代碼片段使用了定位做的,還可以使用transform,只是一種思路,不限制方案。

布局

沒有別人寫的東西炫酷,我都不知道怎么寫內(nèi)容了,布局沒啥好講的,我這里會(huì)有一個(gè)容器包裹內(nèi)部滾動(dòng)的數(shù)字,主要是用于隱藏內(nèi)部滾動(dòng)的數(shù)字超出的部分,代碼如下:

  <div class="roll-container">
    <transition name="roll">
      <div class="roll-number" :key="count">{{ count }}</div>
    </transition>
  </div>

樣式如下:

.roll-container {
  position: relative;
  text-align: center;
  font-size: 120px;
  line-height: 1em;
  color: #fff;
  height: 1em;
  min-width: 1em;
  max-width: 3em;
  background: #000000;
  overflow: hidden;
}
.roll-number {
  width: 100%;
}

這里的細(xì)節(jié)就是transition組件是用于元素顯隱狀態(tài)切換使用的,一般用于v-if、v-show,還有transition-group也是一樣的,不過(guò)transition-group是用于多個(gè)元素上的,可以作用在列表上,對(duì)于列表的數(shù)據(jù)新增、刪除可以觸發(fā)過(guò)渡效果。

而我這里使用keykey發(fā)生改變可以強(qiáng)制元素的更新,可以完整的觸發(fā)組件的生命周期,就達(dá)到了元素銷毀和創(chuàng)建的整個(gè)過(guò)程,也可以觸發(fā)過(guò)渡,key的作用老生常談了,可以網(wǎng)上去查查資料,用得好可以有很多巧妙的作用。

動(dòng)畫

動(dòng)畫是使用vuetransition組件的css class過(guò)渡方式,官網(wǎng)上的文檔過(guò)渡的生命周期描述的很清楚,我就不搬運(yùn)了,vue transiton組件

過(guò)渡css代碼:

/* 
動(dòng)畫激活時(shí)給予初始狀態(tài),這個(gè)基礎(chǔ)狀態(tài)用于定義后續(xù)過(guò)渡動(dòng)作的起點(diǎn)
這里統(tǒng)一定義了組件創(chuàng)建和組件銷毀的兩個(gè)起點(diǎn),主要是賦予 transition 使其有一個(gè)過(guò)渡
*/
.roll-enter-active,
.roll-leave-active {
  transition: all .3s;
  position: absolute;
  top: 0;
}
/* 
組件銷毀,過(guò)渡的終點(diǎn)
最開始的起點(diǎn)是原位,離開的時(shí)候滾到上面去
*/
.roll-leave-to {
  top: -1em;
}
/*
組件創(chuàng)建,過(guò)渡的起點(diǎn)
創(chuàng)建的時(shí)候是重下往上進(jìn)入,所以元素最開始是在下面
*/
.roll-enter-active {
  top: 1em;
}
/*
過(guò)渡的時(shí)候回到起點(diǎn),達(dá)到重下往上滾動(dòng)
*/
.roll-enter-to {
  top: 0;
}

代碼就這么一丟丟,只要理解了過(guò)渡的生命周期,就可以控制各種效果,我這里這個(gè)應(yīng)該是入門級(jí)代碼,這里的細(xì)節(jié)就是需要定義一個(gè)過(guò)渡的起點(diǎn),因?yàn)槭褂玫氖嵌ㄎ唬绻辉O(shè)置起點(diǎn)是沒有過(guò)渡效果的,如果是用變換(transform)可以不用設(shè)置起點(diǎn),為什么這個(gè)就和css相關(guān)了,不在這次的談?wù)摲秶畠?nèi)。

邏輯控制

邏輯控制主要是要?jiǎng)赢媹?zhí)行完成之后才能再次修改變量,否則就會(huì)有重疊,閃動(dòng)等,造成動(dòng)畫不連貫,我這里動(dòng)畫執(zhí)行時(shí)間是300毫秒,所以也就是300毫秒只能修改一次狀態(tài)。

    const count = ref(0);
    // 緩存第一次狀態(tài)修改的時(shí)間
    let click_time = Date.now();
    function addCount() {
      // 300ms 只能執(zhí)行一次
      if (Date.now() - click_time < 300) return;
      // 重置狀態(tài)修改的時(shí)間
      click_time = Date.now();
      count.value += 1;
    }

這個(gè)就是一個(gè)很簡(jiǎn)單的邏輯控制,這里是通過(guò)點(diǎn)擊來(lái)修改的,這里也可以通過(guò)定時(shí)器去處理。

總結(jié)

以前要做一個(gè)數(shù)字滾動(dòng)需要弄一個(gè)插件,插件代碼也多,通過(guò)js進(jìn)行控制處理,一般都是把0-9的數(shù)字放一排,然后滾動(dòng),滾動(dòng)完成把頭部的數(shù)字放到尾部,而使用transition組件只要這么一丟丟代碼就可以完成相同的功能,如果在加上vue3新出的css變量綁定,還可以做到過(guò)渡動(dòng)畫執(zhí)行時(shí)間的動(dòng)態(tài)控制。

以上就是Vue transition組件簡(jiǎn)單實(shí)現(xiàn)數(shù)字滾動(dòng)的詳細(xì)內(nèi)容,更多關(guān)于Vue transition數(shù)字滾動(dòng)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Vue.js 中制作自定義選擇組件的代碼附演示demo

    Vue.js 中制作自定義選擇組件的代碼附演示demo

    這篇文章主要介紹了Vue.js 中制作自定義選擇組件的代碼附演示demo,通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-02-02
  • Vue之mixin混入詳解

    Vue之mixin混入詳解

    這篇文章主要為大家介紹了Vue之mixin混入,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助
    2021-11-11
  • vue中提示$index is not defined錯(cuò)誤的解決方式

    vue中提示$index is not defined錯(cuò)誤的解決方式

    這篇文章主要介紹了vue中提示$index is not defined錯(cuò)誤的解決方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-09-09
  • 解決vue中修改了數(shù)據(jù)但視圖無(wú)法更新的情況

    解決vue中修改了數(shù)據(jù)但視圖無(wú)法更新的情況

    今天小編就為大家分享一篇解決vue中修改了數(shù)據(jù)但視圖無(wú)法更新的情況,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • Vue使用openlayers實(shí)現(xiàn)繪制圓形和多邊形

    Vue使用openlayers實(shí)現(xiàn)繪制圓形和多邊形

    這篇文章主要為大家詳細(xì)介紹了Vue如何使用openlayers實(shí)現(xiàn)繪制圓形和多邊形,文中的示例代碼講解詳細(xì),感興趣的小伙伴快跟隨小編一起動(dòng)手嘗試一下
    2022-06-06
  • Mint UI 基于 Vue.js 移動(dòng)端組件庫(kù)

    Mint UI 基于 Vue.js 移動(dòng)端組件庫(kù)

    Mint UI 包含豐富的 CSS 和 JS 組件,能夠滿足日常的移動(dòng)端開發(fā)需要。接下來(lái)通過(guò)本文給大家分享Mint UI 基于 Vue.js 移動(dòng)端組件庫(kù),需要的朋友參考下吧
    2017-11-11
  • vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決

    vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決

    這篇文章主要介紹了vue 動(dòng)態(tài)設(shè)置img的src地址無(wú)效,npm run build 后找不到文件的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-07-07
  • vue之計(jì)算屬性的緩存computed的用法解讀

    vue之計(jì)算屬性的緩存computed的用法解讀

    這篇文章主要介紹了vue之計(jì)算屬性的緩存computed的用法解讀,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-11-11
  • vue+SpringBoot使用WebSocket方式

    vue+SpringBoot使用WebSocket方式

    WebSocket是一種全雙工通信協(xié)議,通過(guò)HTTP升級(jí)機(jī)制建立連接,支持實(shí)時(shí)雙向數(shù)據(jù)傳輸,示例代碼展示了如何在Java Spring Boot和Vue.js中實(shí)現(xiàn)WebSocket服務(wù)和客戶端
    2025-02-02
  • IDEA中Debug調(diào)試VUE前端項(xiàng)目調(diào)試JS只需兩步

    IDEA中Debug調(diào)試VUE前端項(xiàng)目調(diào)試JS只需兩步

    這篇文章主要為大家介紹了在IDEA中Debug調(diào)試VUE前端項(xiàng)目,只需要兩步就可以調(diào)試JS的實(shí)現(xiàn)方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-02-02

最新評(píng)論

吕梁市| 周宁县| 深圳市| 石渠县| 宾阳县| 尤溪县| 德令哈市| 横峰县| 五莲县| 泰宁县| 通榆县| 浮梁县| 武邑县| 云浮市| 富源县| 连云港市| 鄢陵县| 普兰店市| 泊头市| 榆树市| 平原县| 潮安县| 汤阴县| 农安县| 乌鲁木齐县| 六枝特区| 左权县| 郧西县| 松原市| 莒南县| 宜宾县| 永春县| 读书| 务川| 平谷区| 明星| 陵川县| 禄丰县| 南昌市| 公安县| 赤城县|