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

巧用 CSS 實(shí)現(xiàn)炫彩三角邊框動(dòng)畫

開發(fā) 前端
CSS 還是可以實(shí)現(xiàn)這個(gè)圖形的,本文就將講解如何使用 CSS 實(shí)現(xiàn)上述炫彩三角邊框動(dòng)畫。

最近有個(gè)小伙伴問我,在某個(gè)網(wǎng)站[1]看到一個(gè)使用 SVG 實(shí)現(xiàn)的炫彩三角邊框動(dòng)畫,問能否使用 CSS 實(shí)現(xiàn):

很有意思的一個(gè)動(dòng)畫效果,立馬讓我想起了我在 CSS 奇思妙想邊框動(dòng)畫[2]

一文中介紹的邊框動(dòng)畫,非常的類似:

其核心就是利用了角向漸變(conic-gradient),然后將圖案的中心區(qū)域通過覆蓋遮罩一個(gè)小號(hào)的圖形實(shí)現(xiàn)。

然而,這個(gè)三角形動(dòng)畫里有兩個(gè)難點(diǎn):

1.整個(gè)圖形是個(gè)三角形

在 CSS 中,我們可比較輕松的實(shí)現(xiàn)矩形與圓形,但是三角形這里無疑會(huì)棘手很多。

2.整個(gè)邊框還附帶陰影,并且陰影還是在邊框的兩側(cè)

這里看似不復(fù)雜,實(shí)則困難重重,如果采用上述的方法,將圖案的中心區(qū)域通過覆蓋遮罩一個(gè)小號(hào)的圖形實(shí)現(xiàn)鏤空,那么另外一側(cè)的陰影如何產(chǎn)生?即便使用 drop-shadow,也會(huì)被覆蓋的內(nèi)側(cè)圖形給遮擋住。

當(dāng)然,CSS 還是可以實(shí)現(xiàn)這個(gè)圖形的,本文就將講解如何使用 CSS 實(shí)現(xiàn)上述炫彩三角邊框動(dòng)畫。

通過角向漸變實(shí)現(xiàn)主體動(dòng)畫

首先,我們還是需要借助角向漸變 conic-gradient 實(shí)現(xiàn)整個(gè)動(dòng)畫的主體。

<div></div>
@property --angle {
syntax: '<angle>';
inherits: false;
initial-value: 0deg;
}

div {
width: 260px;
height: 260px;
background: conic-gradient(from var(--angle), hsl(162, 100%, 58%), hsl(270, 73%, 53%), hsl(162, 100%, 58%));
animation: rotate 3s infinite linear;
}

@keyframes rotate {
to {
--angle: 360deg;
}
}

核心就僅僅只是一個(gè)角向漸變圖案,配合 CSS @Property,讓整個(gè)效果旋轉(zhuǎn)起來:

當(dāng)然,如果這里覺得 CSS @Property 不好理解或者擔(dān)心兼容性問題,可以替換成利用偽元素實(shí)現(xiàn)同樣的圖形,然后進(jìn)行 transform: rotate() 旋轉(zhuǎn),效果一樣。

基于矩形圖形得到三角形

OK,接下來,我們需要基于矩形圖形得到三角形圖形,對(duì)于外圈的三角形,我們可以通過 clip-path 切割得到,也非常的簡單:

div {
width: 260px;
height: 260px;
background: conic-gradient(from var(--angle), hsl(162, 100%, 58%), hsl(270, 73%, 53%), hsl(162, 100%, 58%));
animation: rotate 3s infinite linear;
+ clip-path: polygon(0 100%, 100% 100%, 50% 0);
}

即可得到如下效果:

這樣,我們就得到了一個(gè)實(shí)心的三角形。接下來需要先辦法把內(nèi)部給掏空。

最簡單的思路就是,通過疊加一個(gè)小一號(hào)的圖形在中間,顏色和背景色一致即可:

完整的代碼你可以戳這里 -- CodePen Demo -- Pure CSS Linear Triangle[3]

但是,這樣做有兩個(gè)致命問題:

  1. 如果背景色不是實(shí)色而是漸變色,這個(gè)方法就失效了
  2. 這個(gè)方法實(shí)現(xiàn)的三角形邊框內(nèi)側(cè)無法添加陰影效果

這兩個(gè)缺陷都是不可接受的,所以我們必須尋找真正能夠鏤空中間的方式,鏤空完成后,它的中心得是透明的。

因此,這里我們得使用 mask。

不過使用 mask 基于這樣一個(gè)圖形再實(shí)現(xiàn)一個(gè)小一號(hào)的三角形是比較麻煩的,我們相當(dāng)于要實(shí)現(xiàn)這樣一個(gè)鏤空三角形圖形,示意圖如下:

這樣一個(gè)圖形,配合 clip-path,就能得到一個(gè)三角形邊框圖形,啥意思呢,我這里制作了一個(gè)動(dòng)圖示意:

左邊是利用 mask 實(shí)現(xiàn)遮罩后的圖形,右邊是利用 clip-path 切割后的圖形,它們的效果疊加在一起,就能實(shí)現(xiàn)一個(gè)邊框三角形。

當(dāng)然,這里需要對(duì) mask 掌握的比較深入,要使用 mask 切割一個(gè)內(nèi)部鏤空的三角形示意圖如下:

OK,完整的代碼是這樣:

@property --angle {
syntax: '<angle>';
inherits: false;
initial-value: 0deg;
}

div {
width: 260px;
height: 260px;
background: conic-gradient(from var(--angle), hsl(162, 100%, 58%), hsl(270, 73%, 53%), hsl(162, 100%, 58%));
clip-path: polygon(0 100%, 100% 100%, 50% 0);
mask:
linear-gradient(117deg, #000 55%, transparent 55%, transparent),
linear-gradient(-117deg, #000 55%, transparent 55%, transparent),
linear-gradient(#000, #000);
mask-position: 0 0, 130px 0, 0 250px;
mask-size: 130px 250px, 130px 250px, 100% 10px;
mask-repeat: no-repeat;
animation: rotate 3s infinite linear;
}

@keyframes rotate {
to {
--angle: 360deg;
}
}

我們就得到了一個(gè)內(nèi)部鏤空的三角形邊框了:

利用 drop-shadow 添加上光影

最后一步就比較簡單了,由于上述三角形已經(jīng)是一個(gè)鏤空?qǐng)D形,這里直接使用 drop-shadow 給元素加上一層光影效果即可,不過由于使用了 clip-path,直接在原元素上添加的 drop-shadow 無法展示,這個(gè)好解決,我們只需要多套一層結(jié)構(gòu),將 drop-shadow 添加到父元素上即可:

<div class="g-container">
<div class="g-triangle"></div>
</div>
@property --angle {
syntax: '<angle>';
inherits: false;
initial-value: 0deg;
}
.g-container {
width: 260px;
height: 260px;
filter: drop-shadow(0 0 5px hsl(162, 100%, 58%)) drop-shadow(0 0 10px hsl(270, 73%, 53%));
}
.g-triangle {
width: 260px;
height: 260px;
background: conic-gradient(from var(--angle), hsl(162, 100%, 58%), hsl(270, 73%, 53%), hsl(162, 100%, 58%));
clip-path: polygon(0 100%, 100% 100%, 50% 0);
mask:
linear-gradient(117deg, #000 55%, transparent 55%, transparent),
linear-gradient(-117deg, #000 55%, transparent 55%, transparent),
linear-gradient(#000, #000);
mask-position: 0 0, 130px 0, 0 250px;
mask-size: 130px 250px, 130px 250px, 100% 10px;
mask-repeat: no-repeat;
animation: rotate 3s infinite linear;
}
@keyframes rotate {
to {
--angle: 360deg;
}
}

這里又是一個(gè)小技巧,drop-shadow 是可以重復(fù)添加多個(gè)的,這里添加的兩個(gè)陰影顏色就是 conic-gradient() 里設(shè)置的顏色,最終,我們就得到了題圖所示效果:

完整的代碼你可以戳這里 -- CodePen Demo -- Pure CSS Glowing Triangle[4]

了解上述完整代碼,你可能還需要補(bǔ)齊一些基礎(chǔ) CSS 知識(shí),可以按需點(diǎn)進(jìn)去了解:

  • clip-path:奇妙的 CSS shapes(CSS圖形)[5]
  • CSS @property 自定義屬性:CSS @property,讓不可能變可能[6]
  • 利用 drop-shadow 生成不規(guī)則圖形的光源及邊框: 妙用 drop-shadow 實(shí)現(xiàn)線條光影效果[7]

最后

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

參考資料

[1]某個(gè)網(wǎng)站: https://fffuel.co/nnneon/

[2]CSS 奇思妙想邊框動(dòng)畫: https://github.com/chokcoco/iCSS/issues/92

[3]CodePen Demo -- Pure CSS Linear Triangle: https://codepen.io/Chokcoco/pen/jOaLqjQ

[4]CodePen Demo -- Pure CSS Glowing Triangle: https://codepen.io/Chokcoco/pen/OJOjXVv

[5]奇妙的 CSS shapes(CSS圖形): https://github.com/chokcoco/iCSS/issues/18

[6]CSS @property,讓不可能變可能: https://github.com/chokcoco/iCSS/issues/109

[7]妙用 drop-shadow 實(shí)現(xiàn)線條光影效果: https://github.com/chokcoco/iCSS/issues/142

[8]Github -- iCSS: https://github.com/chokcoco/iCSS

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

2022-01-13 07:04:54

CSS 技巧Loading 動(dòng)畫

2023-06-27 09:33:15

Loading 動(dòng)畫CSS

2022-04-12 07:37:08

CSS滾動(dòng)視差效果前端

2022-03-16 14:27:49

CSS三角形前端

2022-01-28 09:01:49

架構(gòu)

2020-12-24 08:37:41

Css前端加載動(dòng)畫

2024-02-20 18:30:53

CSS屬性邊框

2019-04-30 14:17:56

中關(guān)村零售業(yè)創(chuàng)業(yè)者

2021-07-30 06:58:27

python實(shí)現(xiàn)三角函數(shù)

2021-07-16 05:59:27

CSS 技巧帶圓角的三角形

2022-07-08 09:55:54

CSS轉(zhuǎn)場動(dòng)畫

2021-04-15 06:02:50

CSS 三角形技巧

2021-11-03 17:10:37

CSS sticky前端代碼

2021-02-21 14:05:02

區(qū)塊鏈比特幣安全

2021-08-05 23:09:53

前端程序員CSS

2022-07-21 07:05:13

粒子動(dòng)畫CSS

2021-08-30 07:16:45

商業(yè)技術(shù)團(tuán)隊(duì)

2011-09-27 14:53:15

奔圖炫彩機(jī)

2021-08-29 18:32:18

CSS
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 亚洲视频免费 | 国产在线精品一区二区 | 国产一区二区精 | 精品日韩一区 | 欧美日韩视频在线第一区 | 国产成人免费视频 | 成人性视频在线播放 | 国产精品一区二区久久 | 日韩 欧美 二区 | 午夜精品久久久久久久99黑人 | 国产特一级黄色片 | 精品久久久久香蕉网 | 91国内精品久久 | 精品无码久久久久久国产 | 国产精品久久久久久久久久久久久久 | 欧美中文字幕一区二区三区亚洲 | 激情福利视频 | 国产中文字幕在线观看 | 99pao成人国产永久免费视频 | 夜夜摸天天操 | 成人在线小视频 | 欧美日韩在线一区二区 | 99久久99 | av在线免费观看网站 | 欧美日韩国产一区 | 午夜影院中文字幕 | 成人一区二区三区 | 中文字幕亚洲精品在线观看 | 中文字幕一二三区 | 国产电影一区二区 | 久久69精品久久久久久久电影好 | 亚洲a视频 | 亚洲精品一区在线观看 | 久久精品视频在线观看 | 91在线一区 | 美女爽到呻吟久久久久 | 男女网站免费观看 | 日本免费一区二区三区四区 | 性福视频在线观看 | 天堂一区在线 | 精品久久久久久久久久久久 |