欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于Vue2實現(xiàn)數(shù)字縱向滾動效果

 更新時間:2024年03月19日 08:29:05   作者:芝麻小仙女  
這篇文章主要為大家詳細介紹了如何基于Vue2實現(xiàn)數(shù)字縱向滾動效果,從而達到顯示計時器滾動效果,感興趣的小伙伴可以跟隨小編一起學習一下

需求:

在頁面中顯示一個數(shù)字,并在進入視口時顯示計時器滾動效果:

效果如上

實現(xiàn)代碼

新建組件ScrollNumber.vue:

<template>
  <div
    style="
      display: inline-flex;
      justify-content: flex-start;
      align-items: center;
    "
  >
    <div
      v-for="(item, index) in numberList"
      :key="index"
      style="
        display: inline-flex;
        justify-content: flex-start;
        align-items: center;
        padding-bottom: 0.3rem;
        box-sizing: border-box;
      "
    >
      <span v-if="isNaN(item)">{{ item }}</span>
      <div class="number" v-else>
        <span
          class="number-item"
          ref="numberItem"
          :data-number="item"
          :data-index="index"
          >0123456789</span
        >
      </div>
    </div>
  </div>
</template>
 
<script>
export default {
  name: "ScrollNumber",
  props: {
    value: {
      type: [String, Number],
      default: 0,
    },
  },
  watch: {
    value(newVal) {
      if (newVal) {
        this.$nextTick(() => {
          this.setNumberTransform();
        });
      }
    },
  },
  computed: {
    numberList() {
      return String(this.value).split("");
    },
  },
  data() {
    return {
      hasShow: false, // 是否已展示過動畫
    };
  },
  mounted() {
    window.addEventListener("scroll", this.scrollHandle, true); // 監(jiān)聽 監(jiān)聽元素是否進入/移出可視區(qū)域
  },
 
  methods: {
    scrollHandle() {
      const offset = this.$el.getBoundingClientRect();
      const offsetTop = offset.top;
      const offsetBottom = offset.bottom;
      // 進入可視區(qū)域
      if (offsetTop <= window.innerHeight && offsetBottom >= 0) {
        this.setNumberTransform();
        this.hasShow = true;
        window.removeEventListener("scroll", this.scrollHandle, true);
      } else {
        // 移出可視區(qū)域
        if (this.hasShow) {
          window.removeEventListener("scroll", this.scrollHandle, true);
        }
      }
    },
    // 設置每一位數(shù)字的偏移
    setNumberTransform() {
      let numberItems = this.$refs.numberItem;
      let obj = {};
      Array.from(numberItems).forEach((c) => {
        let key = c.dataset.index;
        let value = c.dataset.number;
        let init = 0;
        obj[key] = setInterval(() => {
          if (init < value * 10) {
            init += 1;
            c.style.transform = `translateY(-${init}%)`;
          } else {
            clearInterval(obj[key]);
            obj[key] = null;
          }
        }, 8);
      });
    },
  },
};
</script>
 
<style scoped lang="less">
.number {
  width: 0.42rem;
  height: 0.62rem;
  font-size: 0.56rem;
  font-weight: 800;
  color: #ffe52c;
  text-align: center;
  overflow: hidden;
  line-height: 0.42rem;
  > span {
    text-align: center;
    writing-mode: vertical-rl;
    text-orientation: upright;
    transform: translateY(0%);
  }
}
</style>

使用:

import ScrollNumber from "../ScrollNumber/ScrollNumber.vue";
<scroll-number :value="num.toString()"></scroll-number>

到此這篇關于基于Vue2實現(xiàn)數(shù)字縱向滾動效果的文章就介紹到這了,更多相關Vue2數(shù)字縱向滾動內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • elementUI table如何給表頭添加氣泡顯示

    elementUI table如何給表頭添加氣泡顯示

    這篇文章主要介紹了elementUI table如何給表頭添加氣泡顯示問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • vue內(nèi)置指令詳解

    vue內(nèi)置指令詳解

    指令是Vue模板中最常用的一項功能,它帶有前綴v-,主要職責是當其表達式的值改變時,相應的將某些行為應用在 DOM 上。這篇文章主要介紹了vue內(nèi)置指令詳解,需要的朋友可以參考下
    2018-04-04
  • vue-cli 默認路由再子路由選中下的選中狀態(tài)問題及解決代碼

    vue-cli 默認路由再子路由選中下的選中狀態(tài)問題及解決代碼

    這篇文章主要介紹了vue-cli 默認路由再子路由選中下的選中狀態(tài)問題及解決代碼,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下
    2018-09-09
  • vue如何實現(xiàn)垂直居中

    vue如何實現(xiàn)垂直居中

    這篇文章主要介紹了vue如何實現(xiàn)垂直居中,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • vue3中markRaw示例詳解

    vue3中markRaw示例詳解

    markRaw是將一個對象標記為普通對象,而toRaw是將reactive對象變?yōu)槠胀▽ο?在 Vue 3 中,markRaw 是一個用于告訴 Vue 的響應性系統(tǒng)不要對某個對象進行轉(zhuǎn)換或追蹤其響應性的函數(shù),下面給大家介紹vue3中markRaw詳解,感興趣的朋友一起看看吧
    2024-04-04
  • vue?ui的安裝步驟以及使用詳解

    vue?ui的安裝步驟以及使用詳解

    最近公司開發(fā)一個項目,采用的前后端分離的方式,前端采用vue,但是再項目開發(fā)過程中遇到一個比較麻煩的問題,下面這篇文章主要給大家介紹了關于vue?ui的安裝步驟以及使用的相關資料,需要的朋友可以參考下
    2022-08-08
  • vue-axios的使用以及axios請求賦值為空的問題

    vue-axios的使用以及axios請求賦值為空的問題

    這篇文章主要介紹了vue-axios的使用以及axios請求賦值為空的問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-04-04
  • vue中組件傳值的常見方式小結(jié)

    vue中組件傳值的常見方式小結(jié)

    在 Vue.js 中,組件之間的數(shù)據(jù)傳遞是一個常見的需求,Vue 提供了多種方法來實現(xiàn)這一目標,包括 props、全局事件總線、消息的訂閱與發(fā)布等,下面我們就來學習一下這些方法的具體實現(xiàn)吧
    2023-12-12
  • Vue通過axios發(fā)送ajax請求基礎演示

    Vue通過axios發(fā)送ajax請求基礎演示

    這篇文章主要介紹了Vue通過axios發(fā)送ajax請求基礎演示,包括了axios發(fā)送簡單get請求,axios get傳參,axios發(fā)送post請求等基礎代碼演示需要的朋友可以參考下
    2023-02-02
  • 簡單聊一聊Vue3組件更新過程

    簡單聊一聊Vue3組件更新過程

    我們不光要學會Vue的組件化實現(xiàn)過程,還要懂得組件數(shù)據(jù)發(fā)生變化,更新組件的過程,這篇文章主要給大家介紹了關于Vue3組件更新過程的相關資料,需要的朋友可以參考下
    2022-04-04

最新評論