日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

 

今天來(lái)用 css 實(shí)現(xiàn)一個(gè)帶圓角的環(huán)形 loading 動(dòng)畫,效果是這樣的

圖片

先不考慮動(dòng)畫,其實(shí)就是這樣一個(gè)圖形

圖片

那么,如何來(lái)繪制呢?下面花兩分鐘一起看看吧。

一、CSS實(shí)現(xiàn)思路

首先,看到這環(huán)形逐漸消失的效果,也就是透明度漸變的效果,肯定要聯(lián)想到錐形漸變。

conic-gradient() - CSS:層疊樣式表 | MDN (mozilla.org)[1]

通過錐形漸變,可以很輕松的實(shí)現(xiàn)這樣一個(gè)效果,透明到純色的漸變。

loading{
  background: conic-gradient(transparent 10%, royalblue 90%)
}

效果如下:

圖片

然后,整體是一個(gè)環(huán)形,可以通過徑向漸變配合mask遮罩實(shí)現(xiàn)。

radial-gradient() - CSS:層疊樣式表 | MDN (mozilla.org)[2]

mask - CSS: Cascading Style Sheets | MDN (mozilla.org)[3]

 

loading{
  /*...*/
  -webkit-mask: radial-gradient( closest-side circle, transparent 50%, red 51% 99%, transparent 100%);
}

原理是這樣的。

圖片

還有一個(gè)圓角,可以直接用徑向漸變實(shí)現(xiàn)。

loading{
  background: radial-gradient( closest-side circle, royalblue 99%, transparent 100%) center top/25% 25% no-repeat,
  conic-gradient(transparent 10%, royalblue 90%);;
}

其實(shí)就是兩個(gè)相同顏色的漸變疊加到一起形成的,如下:

圖片

所以完整代碼就是。

loading{
    width: 200px;
    height: 200px;
    background: 
    radial-gradient( closest-side circle, royalblue 99%, transparent 100%) center top/25% 25% no-repeat,
    conic-gradient(transparent 10%, royalblue 90%);
    -webkit-mask: radial-gradient( closest-side circle, transparent 50%, red 51% 99%, transparent 100%);
}

二、更好地自定義顏色

上面的實(shí)現(xiàn)雖然很好的滿足了需求,但是,還是有些CSS設(shè)計(jì)問題。

比如,我如果需要改變 loading 的顏色,需要改變兩個(gè)地方。

圖片

很明顯,這樣的實(shí)現(xiàn)不太符合 DRY(Don't Repeat Yourself)原則。

有一個(gè)比較簡(jiǎn)單思路可以用 CSS 變量來(lái)傳遞。

loading{
    --color: royalblue;
    background: 
    radial-gradient( closest-side circle, var(--color) 99%, transparent 100%) center top/25% 25% no-repeat,
    conic-gradient(transparent 10%, var(--color) 90%);
    -webkit-mask: radial-gradient( closest-side circle, transparent 50%, red 51% 99%, transparent 100%);
}

這樣每次都只需要改變一個(gè)變量就行了。

loading.red{
  --color: red;
}

 

圖片

除了這種方式以外,其實(shí)還有一點(diǎn)需要考慮,為啥背景不能干凈一點(diǎn)、純粹一點(diǎn)呢?換個(gè)說法,現(xiàn)在的背景實(shí)現(xiàn)對(duì)于不了解的同學(xué)來(lái)講,可能會(huì)很費(fèi)勁,能否將這些細(xì)節(jié)隱藏起來(lái),更直觀地去自定義顏色呢?比如像這種方式。

loading.red{
  background: red;
}

如果要實(shí)現(xiàn)這樣的效果,就需要將繪制部分全部在mask遮罩中完成,背景只是展示而已。

那么,如何通過mask遮罩實(shí)現(xiàn)這樣的圖形呢?

三、更直觀地去自定義顏色

mask?遮罩其實(shí)也和 CSS 背景差不多,只是多了一些圖形合成操作,其實(shí)就是布爾運(yùn)算,也就是mask-composite。

mask-composite - CSS: Cascading Style Sheets | MDN (mozilla.org)[4]

/* Keyword values */
mask-composite: add; /* 疊加(默認(rèn)) */
mask-composite: subtract; /* 減去,排除掉上層的區(qū)域 */
mask-composite: intersect; /* 相交,只顯示重合的地方 */
mask-composite: exclude; /* 排除,只顯示不重合的地方 */

相信在很多圖形設(shè)計(jì)軟件中都見到類似的操作(下面是 Photoshop)。

圖片

這個(gè)屬性的值(標(biāo)準(zhǔn)和非標(biāo)準(zhǔn))非常多,-webkit-mask-composite[5] 與標(biāo)準(zhǔn)下的值有所不同,屬性值非常多,如下(chorme 、safari 支持)。

-webkit-mask-composite: clear; /*清除,不顯示任何遮罩*/
-webkit-mask-composite: copy; /*只顯示上方遮罩,不顯示下方遮罩*/
-webkit-mask-composite: source-over; /*疊加,兩者都顯示*/
-webkit-mask-composite: source-in; /*只顯示重合的地方*/
-webkit-mask-composite: source-out; /*只顯示上方遮罩,重合的地方不顯示*/
-webkit-mask-composite: source-atop;
-webkit-mask-composite: destination-over; /*疊加,兩者都顯示*/
-webkit-mask-composite: destination-in; /*只顯示重合的地方*/
-webkit-mask-composite: destination-out;/*只顯示下方遮罩,重合的地方不顯示*/
-webkit-mask-composite: destination-atop;
-webkit-mask-composite: xor; /*只顯示不重合的地方*/
 

之前在這篇文章中有詳細(xì)介紹 mask-composite 的用法,有興趣的可以回顧一下。

CSS mask 實(shí)現(xiàn)鼠標(biāo)跟隨鏤空效果[6]

回到這里,思考一下

分享到:
標(biāo)簽:CSS
用戶無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定