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

超好玩js頁面效果之實現(xiàn)數(shù)值的動態(tài)變化

 更新時間:2022年10月16日 11:19:40   作者:前端小白在前進  
這篇文章主要給大家介紹了關(guān)于超好玩js頁面效果之實現(xiàn)數(shù)值的動態(tài)變化的相關(guān)資料,文中通過示例代碼及圖文介紹的非常詳細,對大家學習或者使用js具有一定的參考學習價值,需要的朋友可以參考下

前言

好兄弟們,今天給大家?guī)硪粋€非常好玩的js小demo,實現(xiàn)數(shù)值的動態(tài)變化!這個效果之前在清華大學的官網(wǎng)上見到過(現(xiàn)在他們把這個效果給取消了),之前覺得這個效果挺好玩的,這些天在復習js的時候,無意間見到了這效果,于是寫了一個,想分享給大家,嘻嘻嘻!??????

效果如下:

話不多說,直接給好兄弟們上代碼:

HTML文件:

  <div class="outer">
    <div class="counter-container">
      <i class="iconfont icon-Basket-Ball" style="font-size:50px"></i>
      <div class="counter" data-set="37062"></div>
      <span>常規(guī)賽總得分</span>
    </div>

    <div class="counter-container">
      <i class="iconfont icon-BasketballHoop" style="font-size:50px"></i>
      <div class="counter" data-set="10210"></div>
      <span>常規(guī)賽總籃板</span>
    </div>

    <div class="counter-container">
      <i class="iconfont icon-assistant" style="font-size:50px"></i>
      <div class="counter" data-set="10045"></div>
      <span>常規(guī)賽總助攻</span>
    </div>
  </div>

代碼解析:

在這里寫了一個大容器包含了三個小容器,每個小容器中的數(shù)據(jù)展示使用data-*屬性
(注:data-*用于存儲頁面或應用程序的私有自定義數(shù)據(jù),賦予我們在所有 HTML 元素上嵌入自定義 data 屬性的能力,存儲的(自定義)數(shù)據(jù)能夠被頁面的 JavaScript 中利用,以創(chuàng)建更好的用戶體驗(不進行 Ajax 調(diào)用或服務器端數(shù)據(jù)庫查詢))
我們這里就把我們自定義的數(shù)據(jù)(37062,10210,10045)傳入,以便在js中使用.

css文件:

* {
    box-sizing: border-box;
  }
  
 .outer {
    background-color: #8e44ad;
    color: #fff;
    font-family: 'Roboto Mono', sans-serif;
    display: flex;
    align-items: center;
    justify-content: center;
    height: 350px;
    overflow: hidden;
    margin: 0;
  }
  
  .counter-container {
    display: flex;
    flex-direction: column;
    justify-content: center;
    text-align: center;
    margin: 30px 50px;
  }
  
  .counter {
    font-size: 60px;
    margin-top: 10px;
  }
  
  @media (max-width: 580px) {
    .outer {
      flex-direction: column;
    }
  }

代碼解析:

css文件很簡單啦,就使用了flex布局,最后小加了一個媒體查詢來適應屏幕尺寸變化,大家自行看吧。

js文件:

let counters = document.querySelectorAll('.counter')  //獲取到三個counter盒子

counters.forEach(item => {
    item.innerText = '0'  //記錄分數(shù)變化的變量,初始值為0

    const updateData = () => {
        const data = +item.getAttribute('data-set')  //獲取到元素中綁定的數(shù)據(jù)
        const tmp = +item.innerText //臨時變量保存變化一次的數(shù)據(jù)量
    
        const changeData = data / 200  //設置改變的速率

        if(tmp < data) {  //如果臨時變量的值小于最終數(shù)據(jù)的值,那么就給元素進行數(shù)據(jù)相加
            item.innerText = `${Math.ceil(tmp + changeData)}`  //值數(shù)相加,然后進行取整
            setTimeout(updateData,1)  //定時器傳入回調(diào)函數(shù)目的在于動態(tài)變化
        } else {
            item.innerText = data  //不滿足條件后,證明得到了最終數(shù)據(jù),直接渲染
        }

    }
    updateData()  //調(diào)用函數(shù),啟動函數(shù)
})

代碼解析:

數(shù)據(jù)的動態(tài)改變邏輯在這里咯!

  1. 首先就要獲取到儲存數(shù)據(jù)的三個div,然后通過foreach方法遍歷我們獲取的三個盒子,初始的分數(shù)是為0的,因此我們把盒子的innerText設置為了0(注意:這里的0是一個字符串)
  2. 隨后定義一個更新數(shù)據(jù)的方法updateData,隨后獲取到我們之前自定義的數(shù)據(jù),在這里有部分朋友看到+item.getAttribute(data-set)估計都懵逼了,為啥+符號在前面呢?+代表后面的數(shù)字為正數(shù),相當于告訴編譯器,即將賦值的數(shù)值類型為數(shù)字類型,不要把數(shù)字當作字符串去拼接
  3. 然后定義一個臨時變量tmp,目的在于保存item.innerText中變化后的數(shù)值,接下來設置數(shù)據(jù)變化的速率在這里是除以了200,除以的數(shù)據(jù)約大,那么變化的速率越慢,反之則快
  4. 隨后去做一個判斷(讓臨時量與總量做對比),如果臨時量小于總量,就讓臨時量tmp與數(shù)據(jù)變化量changeData相加,做一個取整,如果不滿足判斷條件,直接渲染數(shù)據(jù)即可(這時的數(shù)據(jù)已經(jīng)是最終的數(shù)據(jù)了,也就是我們的自定義數(shù)據(jù))
  5. 實現(xiàn)數(shù)據(jù)的動態(tài)變化,最核心的還是定時器,在滿足判斷條件的作用域中啟動定時器,傳入回調(diào)函數(shù)updateData,實現(xiàn)1ms調(diào)用一次,數(shù)據(jù)變化看著很絲滑.

寫在最后:

js的實現(xiàn)邏輯一步步的來,會發(fā)現(xiàn)邏輯很清晰,希望大家在寫js代碼的時候,一步步下手,要不然很容易邏輯混亂,以后的話沒事會給大家分享一些js小demo,一起去搞一些好玩的東西!在娛樂的同時還能提高js的開發(fā)能力!??!????

到此這篇關(guān)于超好玩js頁面效果之實現(xiàn)數(shù)值的動態(tài)變化的文章就介紹到這了,更多相關(guān)js實現(xiàn)數(shù)值動態(tài)變化內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • javascript實現(xiàn)表單隔行變色

    javascript實現(xiàn)表單隔行變色

    這篇文章主要為大家詳細介紹了javascript實現(xiàn)表單隔行變色,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • JS自定義打印及靜默打印的實現(xiàn)方法

    JS自定義打印及靜默打印的實現(xiàn)方法

    在瀏覽器上打印應該一個比較常見的操作, 最簡單的打印方式就是直接點擊瀏覽器右上角,找到“打印”按鈕或者調(diào)用window.print(), 然而,實際情況下大多數(shù)需求都不會如此簡單,所以本文給大家介紹了使用JS自定義打印及靜默打印的方法實現(xiàn),需要的朋友可以參考下
    2024-01-01
  • js中數(shù)組插入、刪除元素操作的方法

    js中數(shù)組插入、刪除元素操作的方法

    下面小編就為大家?guī)硪黄猨s中數(shù)組插入、刪除元素操作的方法。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-02-02
  • 引用 js在IE與FF之間的區(qū)別詳細解析

    引用 js在IE與FF之間的區(qū)別詳細解析

    這篇文章主要介紹了js在IE與FF之間的區(qū)別。需要的朋友可以過來參考下,希望對大家有所幫助
    2013-11-11
  • JavaScript獲取DOM元素的11種方法總結(jié)

    JavaScript獲取DOM元素的11種方法總結(jié)

    這篇文章主要介紹了JavaScript獲取DOM元素的11種方法總結(jié),本文用分4大類11個方法總結(jié)如何獲取DOM元素,需要的朋友可以參考下
    2015-04-04
  • JS 巧妙獲取剪貼板數(shù)據(jù) Excel數(shù)據(jù)的粘貼

    JS 巧妙獲取剪貼板數(shù)據(jù) Excel數(shù)據(jù)的粘貼

    最近需要在瀏覽器端實現(xiàn)excel數(shù)據(jù)的粘貼,一開始去找獲取剪貼板數(shù)據(jù)的方法。但是在瀏覽器端,JS去取是受安全限制的。
    2009-07-07
  • Javascript前端事件循環(huán)機制詳細講解

    Javascript前端事件循環(huán)機制詳細講解

    單線程的同步等待極大影響效率,任務不得不一個一個等待執(zhí)行,對于網(wǎng)頁應用是無法接受的。所以Javascript使用事件循環(huán)機制來解決異步任務的問題。本文就來講講Javascript的事件循環(huán)機制,希望對你有所幫助
    2022-12-12
  • 如何使用JavaScript和XLSX.js將數(shù)據(jù)導出為Excel文件

    如何使用JavaScript和XLSX.js將數(shù)據(jù)導出為Excel文件

    這篇文章主要給大家介紹了關(guān)于如何使用JavaScript和XLSX.js將數(shù)據(jù)導出為Excel文件的相關(guān)資料,xlsx.js基于JavaScript的Excel文件讀寫庫 如果你需要在瀏覽器端處理Excel文件,那么xlsx.js可能是一個不錯的選擇,需要的朋友可以參考下
    2024-05-05
  • JS實現(xiàn)的數(shù)字格式化功能示例

    JS實現(xiàn)的數(shù)字格式化功能示例

    這篇文章主要介紹了JS實現(xiàn)的數(shù)字格式化功能,結(jié)合實例形式分析了javascript針對數(shù)字與字符的相關(guān)運算處理技巧,需要的朋友可以參考下
    2017-02-02
  • 基于原生JS實現(xiàn)分頁效果的示例代碼

    基于原生JS實現(xiàn)分頁效果的示例代碼

    這篇文章主要為大家詳細介紹了如何利用原生js實現(xiàn)分頁效果,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04

最新評論

东丽区| 岑巩县| 开平市| 潍坊市| 兰州市| 井冈山市| 荥经县| 和硕县| 莱芜市| 商南县| 洱源县| 当阳市| 延安市| 潮州市| 建水县| 德州市| 华坪县| 张家港市| 松原市| 北辰区| 当阳市| 长子县| 毕节市| 兴文县| 泗洪县| 东兰县| 三门峡市| 尚义县| 中超| 宝清县| 清远市| 鹿邑县| 称多县| 洛川县| 高邑县| 绩溪县| 蓬安县| 板桥市| 肇庆市| 贵定县| 疏附县|