国产精品久久久aaaa,日日干夜夜操天天插,亚洲乱熟女香蕉一区二区三区少妇,99精品国产高清一区二区三区,国产成人精品一区二区色戒,久久久国产精品成人免费,亚洲精品毛片久久久久,99久久婷婷国产综合精品电影,国产一区二区三区任你鲁

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

CSS 計數器的數字遞增動效技術解析

454398 ? 來源:oschina ? 作者:李中凱 ? 2020-10-18 10:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

CSS 計數器是由 CSS 維護的變量,這些變量可根據 CSS 規則增加從而跟蹤使用次數。我們可以利用這個特性,根據文檔位置來調整內容表現,比如顯示列表編號。

最近在公司官網就用到了這個特性:

image.png

因為這里的序號只是個裝飾,并不強調先后順序。比起使用真實 DOM 元素顯示序號,CSS 計數器更加簡潔靈活,萬一內容順序需要調整,序號也不受影響。

有時候我們會看到某些 Dashboard 界面有數字快速滾動的效果,比如招行 App 的賬戶余額。這種效果怎么實現呢?本文會介紹幾種方法。

JavaScript 方案

最簡單的莫過于用setInterval定時器了,定期修改 DOM 內容就行。不過為了實現更平順的動畫效果,更推薦使用requestAnimationFrame:

functionanimateValue(obj,start,end,duration){
letstartTimestamp=null;
conststep=(timestamp)=>{
if(!startTimestamp)startTimestamp=timestamp;
constprogress=Math.min((timestamp-startTimestamp)/duration,1);
obj.innerHTML=Math.floor(progress*(end-start)+start);
if(progress

js.gif

CSS @keyframes 結合 margin

這個思路比較有意思,原理是把數字排成一行,通過動畫移動元素位置來顯示不同位置的數字:



0
1
2
3
4
5
6
7
8
9
10
.counter{
width:100px;
overflow:hidden;
}
.numbers{
width:auto;
display:flex;
animation:countNumber4sinfinitealternate;
animation-timing-function:steps(10);
}
.numbersdiv{
text-align:center;
flex:00100px;
}

@keyframescountNumber{
0%{
margin-left:0px;
}
100%{
margin-left:-1000px;
}
}

keyframe.gif

CSS 計數器入門版

CSS 計數器使用到以下幾個屬性:

counter-reset - 創建或者重置計數器

counter-increment - 遞增變量

content - 插入生成的內容

counter() 或 counters() 函數 - 將計數器的值添加到元素

要使用 CSS 計數器,得先用 counter-reset 創建。結合 CSS 動畫@keyframes,在動畫的不同階段設置不同的遞增值,就能實現這個效果:

div::after{
content:counter(count);
animation:counter3slinearinfinitealternate;
counter-reset:count0;
}

@keyframescounter{
0%{
counter-increment:count0;
}
10%{
counter-increment:count1;
}
20%{
counter-increment:count2;
}
30%{
counter-increment:count3;
}
40%{
counter-increment:count4;
}
50%{
counter-increment:count5;
}
60%{
counter-increment:count6;
}
70%{
counter-increment:count7;
}
80%{
counter-increment:count8;
}
90%{
counter-increment:count9;
}
100%{
counter-increment:count10;
}
}

CSS 計數器高配版

更進一步,如果敢用最新特性,其實有更秀的操作,那就是給 CSS 變量設置動畫。這個技巧的核心就是設置 CSS 自定義屬性為整數類型,這樣就能像其他擁有整數類型值的 CSS 屬性一樣,可用于transition中了。

@property--num{
syntax:'';
initial-value:0;
inherits:false;
}

div{
transition:--num1s;
counter-reset:numvar(--num);
}
div:hover{
--num:10000;
}
div::after{
content:counter(num);
}

不過需要注意的是,目前只有 Chrome (或者 Chromium 內核的瀏覽器比如 Edge 和 Opera)支持@property語法,因此兼容性是個問題。如果你的頁面只針對 Chrome(比如 Electron 應用),那就可以放心使用。否則還是用前面的保守方案吧。

小數也能玩動畫

前面說的變量都要求是整數,那能不能讓小數也支持這種動畫呢?答案是可以的。

可以把小數轉成整數。步驟原理是:

注冊一個整型的 CSS 變量(即--number),指定初始值initial-value。

用calc將值取整:--integer: calc(var(--number))

@property--integer{
syntax:"";
initial-value:0;
inherits:false;
}
--number:1234.5678;
--integer:calc(var(--number));/*1235*/

如果只需要提取整數部分,可以這樣:--integer: max(var(--number) - 0.5, 0),連calc()都不需要了。類似方法可以提取小數部分。

/*@property--integer*/
--number:1234.5678;
--integer:max(var(--number)-0.5,0);/*1234*/

完整代碼:

@property--percent{
syntax:"";
initial-value:0;
inherits:false;
}
@property--temp{
syntax:"";
initial-value:0;
inherits:false;
}
@property--v1{
syntax:"";
initial-value:0;
inherits:false;
}
@property--v2{
syntax:"";
initial-value:0;
inherits:false;
}

div{
font:80040pxmonospace;
padding:2rem;
transition:--percent1s;
--temp:calc(var(--percent)*100);
--v1:max(var(--temp)-0.5,0);
--v2:max((var(--temp)-var(--v1))*100-0.5,0);
counter-reset:v1var(--v1)v2var(--v2);
}
div::before{
content:counter(v1)"."counter(v2,decimal-leading-zero)"%";
}
constgenNumber=()=>{
document.querySelector("div").style.setProperty("--percent",Math.random());
};

setInterval(genNumber,2000);
setTimeout(genNumber);


編輯:hfy

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    MAXIM ICM7225:4 又 1/2 位計數器/解碼/驅動技術剖析

    MAXIM ICM7224/7225:4 又 1/2 位計數器/解碼/驅動技術剖析 作為電子工程師,在設計各類計數、頻率測量及顯示電路
    的頭像 發表于 02-03 10:35 ?173次閱讀

    MAXIM ICM7224:高速4.5位計數器、解碼與驅動的卓越之選

    )和ICM7225(適用于LED)高速4.5位計數器、解碼與驅動,憑借其獨特的性能和豐富的功能,在眾多應用場景中展現出強大的優勢。本文將深入剖析這兩款產品的特點、應用及相關技術細節
    的頭像 發表于 02-03 10:35 ?153次閱讀

    探索Maxim ICM7217:4位(LED)可預設上下計數器的卓越性能

    的ICM7217系列4位(LED)可預設上下計數器,了解它的特性、應用以及設計要點。 文件下載: ICM7217.pdf 一、產品概述 ICM7217系列包含4位、7段LED顯示驅動和可預設比較(預定)寄存
    的頭像 發表于 02-03 10:25 ?145次閱讀

    如何挑對一款數字式頻率計數器

    ?關鍵詞:數字式頻率計數器數字式頻率計,時間間隔測量儀,頻率計,國產頻率計 頻率通用計數器作為電子測量領域的“精準標尺”,廣泛應用于研發調試、產線檢測、計量校準等場景。選對設備不僅能
    的頭像 發表于 01-07 18:47 ?74次閱讀

    國產自研高性價比頻率通用計數器來嘍 #頻率計# 頻率計數器#

    計數器
    知道點啥
    發布于 :2026年01月07日 17:01:27

    數字頻率計數器在計量檢測中的重要性 頻率計數器 高精度通用計數器

    SYN5635型數字頻率計數器是計量檢測領域的核心基礎儀器,其核心價值在于提供高精度頻率與時間基準、保障量值統一、支撐全鏈路質量控制與合規溯源,是電子、通信、航天等領域測量可靠性的關鍵保障。 一
    的頭像 發表于 01-05 17:53 ?1353次閱讀
    <b class='flag-5'>數字頻率計數器</b>在計量檢測中的重要性 頻率<b class='flag-5'>計數器</b> 高精度通用<b class='flag-5'>計數器</b>

    數字顯示頻率計數器功能介紹

    計數器
    西安同步電子科技有限公司
    發布于 :2025年11月06日 15:58:15

    高精度數字頻率計數器

    計數器
    西安同步電子科技有限公司
    發布于 :2025年11月06日 15:39:15

    國產數字頻率計數器特點總結

    計數器
    西安同步電子科技有限公司
    發布于 :2025年11月04日 17:56:41

    國產頻率計數器vs進口頻率計數器

    計數器
    西安同步電子科技有限公司
    發布于 :2025年11月04日 17:55:01

    多功能型數字頻率計數器介紹

    計數器
    西安同步電子科技有限公司
    發布于 :2025年11月04日 17:53:53

    頻率計數器/定時 時間間隔計數器的應用領域和范圍的深度解析 頻率計數器模塊

    穩定性的核心優勢,成為解決各時間測量需求的優選方案。 一、集成化高精度時間測量單元 SYN5620A是一款基于先進計時技術數字信號處理算法開發的時間間隔計數器模塊,專為需要精準測量兩個信號之間時間間隔、脈沖寬度、信號周期等參數
    的頭像 發表于 10-30 11:22 ?595次閱讀
    頻率<b class='flag-5'>計數器</b>/定時<b class='flag-5'>器</b> 時間間隔<b class='flag-5'>計數器</b>的應用領域和范圍的深度<b class='flag-5'>解析</b> 頻率<b class='flag-5'>計數器</b>模塊

    雷擊計數器的種類和綜合選型部署解決方案

    一、雷擊計數器的定義與作用 雷擊計數器(Lightning Counter,又稱雷電計數器、雷擊記錄儀)是安裝在避雷針、接閃桿、SPD(浪涌保護)或下引線回路中,用于記錄雷擊或浪涌事
    的頭像 發表于 09-11 15:28 ?850次閱讀
    雷擊<b class='flag-5'>計數器</b>的種類和綜合選型部署解決方案

    雷電(雷擊)計數器的原理、作用及行業應用解決方案

    安全事故。雷電(雷擊)計數器作為防雷系統中的重要組成部分,扮演著“記錄雷擊事件、輔助安全運維”的關鍵角色,已經成為智能防雷系統中不可或缺的一環。 二、雷電(雷擊)計數器的原理 1. 工作原理 雷電計數器主要依靠電磁
    的頭像 發表于 06-12 15:14 ?1063次閱讀
    雷電(雷擊)<b class='flag-5'>計數器</b>的原理、作用及行業應用解決方案

    數字電路—24、計數器

    數字電路中,能夠記憶輸入脈沖個數的電路稱為計數器
    發表于 03-26 15:13