色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

    評論

    相關推薦

    雷擊計數器的概述與應用分析

    雷擊計數器 是一種用于監測和記錄電力系統、通信系統、建筑物等關鍵設施遭受雷擊次數的設備。它能夠有效地幫助管理人員掌握雷電活動的情況,以便進行預防性維護和風險評估。雷擊計數器根據工作原理可以分為無源
    的頭像 發表于 10-21 10:31 ?310次閱讀
    雷擊<b class='flag-5'>計數器</b>的概述與應用分析

    頻率計數器技術原理和應用場景

    頻率計數器,又稱頻率計,是一種專門用于測量信號頻率的電子測量儀器。以下是對其技術原理和應用場景的詳細分析:一、技術原理頻率計數器技術原理基
    發表于 10-18 14:03

    正交解碼計數器

    正交解碼計數器
    發表于 09-06 11:41 ?0次下載

    計數器的特點和參數

    計數器作為一種常用的電子元件,在電子設備和系統中扮演著至關重要的角色。它們不僅用于存儲和增減數字值,還廣泛應用于時序和頻率測量、事件計數、控制步進電機和伺服系統、錯誤檢測和糾正以及計算機數據存儲和操作等領域。以下將詳細闡述
    的頭像 發表于 08-29 14:54 ?1119次閱讀

    計數器同步和異步怎么判斷

    計數器同步和異步是數字電路設計中的一個重要概念,它們在很多應用場景中都扮演著關鍵角色。 一、計數器概述 計數器是一種常見的數字電路,它可以對
    的頭像 發表于 07-23 11:14 ?1459次閱讀

    SN74HC193-Q1 4位同步遞增/遞減計數器數據表

    電子發燒友網站提供《SN74HC193-Q1 4位同步遞增/遞減計數器數據表.pdf》資料免費下載
    發表于 06-04 10:46 ?0次下載
    SN74HC193-Q1 4位同步<b class='flag-5'>遞增</b>/遞減<b class='flag-5'>計數器</b>數據表

    二進制串行計數器工作原理是什么?

    的工作原理進行深入解析,幫助你更好地理解這一數字電路的核心組件。 一、二進制串行計數器的基本概念 二進制串行計數器是一種基于二進制數制的計數器
    的頭像 發表于 05-28 15:52 ?881次閱讀

    同步計數器和異步計數器的區別

    數字電子領域中,計數器是一種用于統計脈沖信號數量的重要設備。其中,同步計數器和異步計數器是兩種不同類型的計數器,它們在工作原理、特性以及應
    的頭像 發表于 05-24 14:36 ?4432次閱讀

    同步計數器的主要類型和工作原理

    數字電子領域,計數器是一種用于統計脈沖信號數量的設備,廣泛應用于各種數字系統和電路中。其中,同步計數器作為計數器的一種重要類型,具有其獨特
    的頭像 發表于 05-24 14:34 ?1442次閱讀

    計數器的結構和工作原理

    計數器,作為一種基礎的電子設備,廣泛應用于數字電路、計算機系統以及工業自動化等多個領域。它通過對輸入信號進行計數和狀態轉換,實現對事件發生次數的統計和顯示。本文將深入探討計數器的定義、
    的頭像 發表于 05-23 15:34 ?4962次閱讀

    脈沖計數器的分類和作用

    在電子技術數字系統中,脈沖計數器作為一種基本而重要的邏輯器件,其應用廣泛且功能多樣。脈沖計數器不僅能夠實現基本的計數操作,還具備多種輸出功
    的頭像 發表于 05-15 17:11 ?1244次閱讀

    簡單認識脈沖計數器

    數字電路和電子測量領域中,脈沖計數器作為一種基本而重要的工具,其應用十分廣泛。脈沖計數器,也被稱為脈沖頻率計或脈沖數計,主要用于統計和測量輸入脈沖信號的頻率或數量。本文將詳細闡述脈沖計數器
    的頭像 發表于 05-15 17:08 ?1815次閱讀

    計數器怎么判斷同步和異步 計數器異步和同步的區別

    計數器是計算機領域中常用的一種數據結構,用于記錄和控制程序執行中的指令或事件發生的次數。計數器可以根據同步機制或異步機制進行操作。本文將詳細討論計數器的同步性和異步性,深入探討兩者的區別及其在實際
    的頭像 發表于 02-22 15:14 ?3839次閱讀

    計數器怎么用 計數器的作用有哪些

    計數器是一種被廣泛應用于各個領域的實用工具,在我們的日常生活中隨處可見。無論是進行時間統計,協助工作任務的完成,還是用于科學研究和編程技術,在各個領域都起到了重要的作用。本文將詳細介紹計數器
    的頭像 發表于 02-03 10:04 ?5485次閱讀

    雷擊計數器綜合選型應用方案

    雷擊計數器的基本原理是利用雷電流通過導線時產生的感應電壓或電流來驅動計數器計數。根據計數器的類型,可以分為機械式雷擊計數器和電子式雷擊
    的頭像 發表于 01-31 09:50 ?568次閱讀
    雷擊<b class='flag-5'>計數器</b>綜合選型應用方案
    主站蜘蛛池模板: 51久久夜色精品国产| 中文字幕视频免费在线观看| 亚洲刺激视频| 成人短片迅雷下载| 空姐内射出白浆10p| 亚洲日韩中文字幕区| 国产精品久久久久久久人人看| 日本xxx在线观看免费播放| 99re6久久热在线视频| 久久永久视频| 稚嫩挤奶h调教h| 开心色99xxxx开心色| 浴室里强摁做开腿呻吟的漫画| 精品人妻伦一二三区久久AAA片| 亚洲精品第一综合99久久| 国产偷抇久久精品A片蜜臀AV| 香港论理午夜电影网| 国产一区免费在线观看| 性刺激欧美三级在线现看中文| 国产久青青青青在线观看| 新版孕妇bbwbbwbbw| 国产色偷偷男人的天堂| 亚洲精品高清在线观看| 狠狠色香婷婷久久亚洲精品| 亚洲人成www在线播放| 久久日本精品在线热| 坠落的丝袜美人妻| 欧美肥胖女人bbwbbw视频| 草比比过程图| 无套内谢大学生A片| 精品免费久久久久久影院| 中国比基尼美女| 琪琪电影午夜理论片YY6080| 国产高清免费观看| 亚洲欧美精品一中文字幕| 快播成电影人网址| 被六个男人躁到一夜同性| 四虎精品久久| 久久99国产精品一区二区| bbwvideos欧美老妇| 视频成人永久免费视频|