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

css實現(xiàn)文字充電效果的示例代碼

  發(fā)布時間:2023-01-03 16:23:56   作者: 絕情俏男人   我要評論
本文主要介紹了css實現(xiàn)文字充電效果的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧

前言

今年Apple推出了搭載M2芯片的新款MacBook Pro和MacBook Air,得到消息第一時間也是去Apple官網(wǎng)看看介紹,看看他們的產(chǎn)品網(wǎng)頁,這次沒有什么特別的,但是有個電池續(xù)航20小時的文字有一個充電的效果

今天就來實現(xiàn)這個充電的效果,并且使用到了CSS的新函式clamp()

實現(xiàn)充電效果

在HTML部分使用亂數(shù)假文自動生成隨機文本

<h1>Lorem ipsum dolor sit amet consectetur adipisicing elit.</h1>

然后加入body選擇器,用Flexbox的方法將內(nèi)容上下左右居中,設(shè)定背景顏色為黑色

body{
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
  background-color: #000;
}

然后加入h1選擇器,文字先設(shè)為白色,寬度設(shè)為50%,將字距收窄一點,使用letter-spacing設(shè)為-3px

h1{
  color: #fff;
  width: 50%
  margin: 0 auto;
  font-family: Helvetica;
  font-size: 60px;
  letter-spacing: -3px;
}

要做到充電的效果關(guān)乎到兩個顏色,白色和綠色,這里使用linear-gradient()去達到

h1選擇器加入background-image(漸層顏色是套用background-image而不是background-color),使用linear-gradient(),先設(shè)定白色50%,然后綠色50%

h1{
  background-image: linear-gradient(#fff 50%,#4cd265 50%);
}

然后加上background-clip: text,以文字作為遮罩,再將文字設(shè)為透明色color: transparent

h1選擇器定義一個CSS變量 --progress:0,在0的時候文字是全白色,1的時候是全綠色,然后將兩個50%的值替換成calc()計算,將--progress改為0.5看看效果

--progress:0.5;

background-image: linear-gradient(#fff calc(100% - calc(var(--progress) * 100%)),#4cd265 calc(100% - calc(var(--progress) * 100%)));

但是就這樣效果就有點寡,在充滿電的時候?qū)⑽淖址糯笠恍?,放大使?code>transform:scale(1.3),充電的完成度完全由--progress控制,當(dāng)--progress小于1的時候scale()設(shè)為1,等于1的時候scale()設(shè)為1.3,但是css沒有if判斷式可以用

這里使用一個新的css函式clamp(),這個函式接收三個值,第一個值最小值,我們填1,第三個值最大值,我們填3,而第二個值,如果少于1的話結(jié)果就是1,如果大于1.3結(jié)果就是1.3,如果在1和1.3之間的話,結(jié)果就是第二個值設(shè)定值

假設(shè)每次充電都加0.01,即100充滿電,通過calc(),var(--progress)-0.99再乘一個比較大的值,--progress在0.99或以下的時候scale()為1,--progress為1時scale()為1.3,再加入一個動畫的過渡

transform: scale(clamp(1,calc((var(--progress)-0.99) * 200),1.3));
transition: .3s transform ease-out;

最后,就是處理觸發(fā)動畫的部分了,定義一個變量progress,然后定義一個run函數(shù),里面判斷如果progress少于1的話progress加0.01,為了確保計算的精度準(zhǔn)確,先用toFixed(2)轉(zhuǎn)換為兩個小數(shù)位再用parseFloat()轉(zhuǎn)換為數(shù)字,然后通過setProperty()將progress設(shè)定到css變量中,再加一個setTimeout(),每隔20毫秒就執(zhí)行一次run函數(shù)

let progress=0
function run(){
  if(progress<1){
    progress=parseFloat((progress + 0.01).toFixed(2))
    document.querySelector('h1').style.setProperty('--progress',progress)
    console.log(progress);
    setTimeout(run, 20);
  }
}
run()

看看最終效果

到此這篇關(guān)于css實現(xiàn)文字充電效果的示例代碼的文章就介紹到這了,更多相關(guān)css文字充電內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持腳本之家!

相關(guān)文章

  • css+svg實現(xiàn)b站充電效果的示例代碼

    這篇文章主要介紹了css+svg實現(xiàn)b站充電效果的示例代碼,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)
    2020-04-13
  • 純CSS 實現(xiàn)酷炫的充電動畫

    這篇文章主要介紹了純CSS 實現(xiàn)酷炫的充電動畫效果,本文通過實例截圖的形式給大家展示的非常好,需要的朋友可以參考下
    2019-12-23

最新評論

淮北市| 无棣县| 镇赉县| 宁明县| 镇赉县| 澄城县| 建始县| 佛教| 平谷区| 蓬莱市| 阜新市| 远安县| 历史| 原平市| 河曲县| 安远县| 汤阴县| 东源县| 堆龙德庆县| 东源县| 拉萨市| 高尔夫| 哈巴河县| 蓝山县| 济南市| 米脂县| 西宁市| 西丰县| 辽中县| 齐齐哈尔市| 鄢陵县| 河东区| 顺义区| 正宁县| 南丹县| 巴彦县| 大渡口区| 阿荣旗| 祁阳县| 新宾| 揭西县|