日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
利用 CSS @property 探尋漸變的極限狀態(tài)

本文利用 CSS @property 來實(shí)現(xiàn)一些有意思的(但可能沒什么用的)事情。

“專業(yè)、務(wù)實(shí)、高效、創(chuàng)新、把客戶的事當(dāng)成自己的事”是我們每一個(gè)人一直以來堅(jiān)持追求的企業(yè)文化。 成都創(chuàng)新互聯(lián)公司是您可以信賴的網(wǎng)站建設(shè)服務(wù)商、專業(yè)的互聯(lián)網(wǎng)服務(wù)提供商! 專注于做網(wǎng)站、成都網(wǎng)站制作、軟件開發(fā)、設(shè)計(jì)服務(wù)業(yè)務(wù)。我們始終堅(jiān)持以客戶需求為導(dǎo)向,結(jié)合用戶體驗(yàn)與視覺傳達(dá),提供有針對性的項(xiàng)目解決方案,提供專業(yè)性的建議,創(chuàng)新互聯(lián)建站將不斷地超越自我,追逐市場,引領(lǐng)市場!

漸變動(dòng)畫的歷史

我們都知道,在之前,我們想實(shí)現(xiàn)漸變的動(dòng)畫,其實(shí)是非常復(fù)雜甚至是做不到的。

例如,從下圖 A 狀態(tài),到 B 狀態(tài):

 
 
 
 
  1.  
 
 
 
 
  1. div { 
  2.     width: 300px; 
  3.     height: 150px; 
  4.     animation: gradientChange 5s infinite linear; 
  5. @keyframes gradientChange { 
  6.     from { 
  7.         background: linear-gradient(black, deeppink); 
  8.     } 
  9.     to { 
  10.         background: linear-gradient(green, blue); 
  11.     } 

我們無法得到補(bǔ)間動(dòng)畫,只能得到兩幀動(dòng)畫的切換:

而有了 CSS @property 之后,我們可以非常輕松的實(shí)現(xiàn)漸變直接的動(dòng)畫效果,只需要這樣改造一下代碼:

 
 
 
 
  1. @property --colorA { 
  2.     syntax: ""; 
  3.     inherits: false; 
  4.     initial-value: black; 
  5. @property --colorB { 
  6.     syntax: ""; 
  7.     inherits: false; 
  8.     initial-value: deeppink; 
  9. div { 
  10.     width: 300px; 
  11.     height: 150px; 
  12.     background: linear-gradient(var(--colorA), var(--colorB)); 
  13.     animation: propertyChange 4s infinite linear; 
  14. @keyframes propertyChange { 
  15.     from { 
  16.         --colorA: black; 
  17.         --colorB: deeppink; 
  18.     } 
  19.     to { 
  20.         --colorA: green; 
  21.         --colorB: blue; 
  22.     } 

可以非常輕松的得到漸變的變化動(dòng)畫效果:

對于 CSS @Property 還不算太了解的,可以猛擊這篇文章:CSS @property,讓不可能變可能[1]

利用 CSS @property 探尋漸變的極限狀態(tài)

基于此,我們就可以利用 CSS @property 來搞事了。

我們可以利用它,觀察漸變的一些極限狀態(tài)??纯吹綕u變粒度非常小的時(shí)候,會(huì)發(fā)生什么,它的變化狀態(tài)又是如何的。

主要是利用多重線性漸變、多重徑向漸變、多重角向漸變。

多重線性漸變

它們的代碼其實(shí)都大同小異:

 
 
 
 
  1. @property --per { 
  2.   syntax: ''; 
  3.   inherits: false; 
  4.   initial-value: 100%; 
  5.  
  6. body { 
  7.     background: repeating-linear-gradient(45deg, deeppink, #fc0, #000, red, green, gray var(--per)); 
  8.     animation: perChange 60s infinite linear; 
  9.     cursor: pointer; 
  10.  
  11.     &:hover { 
  12.         animation-play-state: paused; 
  13.     } 
  14.  
  15. @keyframes perChange { 
  16.     5% { 
  17.         --per: 1%; 
  18.     } 
  19.     10% { 
  20.         --per: .1%; 
  21.     } 
  22.     30% { 
  23.         --per: .01%; 
  24.     } 
  25.     50% { 
  26.         --per: .001%; 
  27.     } 
  28.     70% { 
  29.         --per: .0001%; 
  30.     } 
  31.     78% { 
  32.         --per: .00001%; 
  33.     } 
  34.     90% { 
  35.         --per: .000001%; 
  36.     } 
  37.     95%, 
  38.     100% { 
  39.         --per: .0000001%; 
  40.     } 

通過控制多重線性漸變的沒份的百分比 --per,觀察動(dòng)畫的變化:

我們還可以通過 hover 偽類,在 hover 元素的時(shí)候添加 animation-play-state: paused 以暫停動(dòng)畫。

多重徑向漸變

和上述代碼一樣,只需要把 repeating-linear-gradient() 改為 repeating-radial-gradient() 即可。

最終的動(dòng)畫效果:

這里還有兩張演示圖:

多重角向漸變

和上述代碼一樣,只需要把 repeating-linear-gradient() 改為 repeating-conic-gradient() 即可。

最終的動(dòng)畫效果:

由于完整的變化圖片超出了限制,我只能每秒截取了 3 幀,所以看起來非常卡頓,實(shí)際是非常流暢的,補(bǔ)充一個(gè)完整的 5 秒的變化:

可以看到,在 --per 逐漸變小的過程中,整個(gè)漸變圖形呈現(xiàn)出了非常有意思的效果,在小于 0.1% 基本已經(jīng)處于一種非常抽象看不懂的狀態(tài),在小于 0.00001% 后,圖形已經(jīng)無法被渲染出來了。

上述完整的代碼,你可以戳這里:CSS 靈感 -- 利用 CSS @property 探尋漸變的極限效果[2]

基于此,其實(shí)還可以做很多有意思的事情,譬如實(shí)現(xiàn)一個(gè)電視的雪花效果:

CSS 靈感 -- 利用漸變及 CSS Property 實(shí)現(xiàn) TV 噪音動(dòng)畫[3]

CSS @property 其實(shí)非常強(qiáng)大,本文只是介紹它的冰山一角,旨在讓大家淺顯的了解有這么個(gè)東西,在 CSS 動(dòng)畫的過程中如果發(fā)現(xiàn)有一些本身不支持的動(dòng)畫的屬性,可以考慮利用 CSS @proerpty,巧妙的實(shí)現(xiàn)它~

最后

好了,本文到此結(jié)束,希望對你有幫助 ????

參考資料

[1]CSS @property,讓不可能變可能:

https://github.com/chokcoco/iCSS/issues/109

[2]CSS 靈感 -- 利用 CSS @property 探尋漸變的極限效果:

https://csscoco.com/inspiration/#/./background/css-property-variable-bg-change-animation.md

[3]CSS 靈感 -- 利用漸變及 CSS Property 實(shí)現(xiàn) TV 噪音動(dòng)畫:

https://csscoco.com/inspiration/#/./background/background-css-property-tv-noise

[4]CSS 靈感:

https://csscoco.com/inspiration/#/

[5]Github -- iCSS:

https://github.com/chokcoco/iCSS


本文名稱:利用 CSS @property 探尋漸變的極限狀態(tài)
網(wǎng)頁地址:http://www.5511xx.com/article/cdggicj.html