成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開(kāi)發(fā) 前端
本文利用 CSS @property 來(lái)實(shí)現(xiàn)一些有意思的事情。我們都知道,在之前,我們想實(shí)現(xiàn)漸變的動(dòng)畫(huà),其實(shí)是非常復(fù)雜甚至是做不到的。

[[420813]]

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

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

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

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

  1. <div></div> 
  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.     } 

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

圖片

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

  1. @property --colorA { 
  2.     syntax: "<color>"
  3.     inherits: false
  4.     initial-value: black; 
  5. @property --colorB { 
  6.     syntax: "<color>"
  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)畫(huà)效果:

圖片

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

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

基于此,我們就可以利用 CSS @property 來(lái)搞事了。

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

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

多重線性漸變

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

  1. @property --per { 
  2.   syntax: '<percentage>'
  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.     } 

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

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

多重徑向漸變

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

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

這里還有兩張演示圖:

多重角向漸變

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

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

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

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

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

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

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

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

最后

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

參考資料

[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)畫(huà):

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

[4]CSS 靈感:

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

[5]Github -- iCSS:

https://github.com/chokcoco/iCSS

 

責(zé)任編輯:姜華 來(lái)源: iCSS前端趣聞
相關(guān)推薦

2023-05-08 09:08:33

CSS前端

2025-05-13 00:00:05

2023-02-24 08:32:50

CSS漸變屬性

2023-06-05 09:28:32

CSS漸變

2021-04-20 08:11:33

Css前端@property

2023-08-07 15:49:59

CSS顏色插值算法

2022-07-04 21:50:43

NoiseCSS

2009-09-14 18:41:59

LINQ查詢(xún)

2009-09-15 15:07:25

2022-04-16 12:38:39

CSS前端

2022-10-27 09:13:58

CSSGradient

2023-06-30 13:27:54

CSS徑向漸變

2025-02-08 09:33:58

2009-10-22 09:25:28

linux磁盤(pán)配額

2011-05-20 11:12:46

惠普綠色商用臺(tái)式

2023-07-17 09:19:20

CSSCSS 漸變

2022-02-28 07:02:51

CSS二維碼前端

2021-10-14 06:01:27

CSS 技巧Overview

2022-09-26 20:19:05

CSS?技巧JS?

2018-08-01 10:40:04

Redis內(nèi)存增長(zhǎng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 四虎影音 | 精品一区二区三区四区 | 人妖一区 | 国产高清在线 | 欧美高清视频在线观看 | 久久免费视频观看 | 国产人久久人人人人爽 | 国产99免费 | 中文字幕亚洲国产 | 在线视频一区二区 | 日韩在线欧美 | 国产日韩一区二区三区 | 在线欧美小视频 | 日韩高清一区二区 | 国产成人精品一区二区三区 | 男人的天堂久久 | 色接久久| 国产超碰人人爽人人做人人爱 | 亚洲国产aⅴ成人精品无吗 亚洲精品久久久一区二区三区 | 亚洲一区中文 | 精品一二区 | 一区二区在线 | 密桃av | 日韩电影一区 | 日韩视频一区二区 | 日本不卡一区二区三区在线观看 | 日韩图区 | 中文字幕第一页在线 | 91精品一区二区三区久久久久 | 亚洲综合久久精品 | 久久999| 亚洲欧美综合网 | 国产a区 | 日韩欧美亚洲 | 精品在线99 | 久草在线| 亚洲成av人片在线观看 | 伊人性伊人情综合网 | 久久香焦 | 免费播放一级片 | 久久久人成影片免费观看 |