亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.430618.com 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

手把手帶你使用CSS創建炫彩三角邊框動畫


最近有個小伙伴問我,在某個網站看到一個使用 SVG 實現的炫彩三角邊框動畫,問能否使用 CSS 實現:


手把手帶你使用CSS創建炫彩三角邊框動畫


很有意思的一個動畫效果,立馬讓我想起了我在 CSS 奇思妙想邊框動畫 一文中介紹的邊框動畫,非常的類似:


手把手帶你使用CSS創建炫彩三角邊框動畫


其核心就是利用了角向漸變(conic-gradient),然后將圖案的中心區域通過覆蓋遮罩一個小號的圖形實現。

然而,這個三角形動畫里有兩個難點:

整個圖形是個三角形

在 CSS 中,我們可比較輕松的實現矩形與圓形,但是三角形這里無疑會棘手很多。

整個邊框還附帶陰影,并且陰影還是在邊框的兩側

這里看似不復雜,實則困難重重,如果采用上述的方法,將圖案的中心區域通過覆蓋遮罩一個小號的圖形實現鏤空,那么另外一側的陰影如何產生?即便使用 drop-shadow,也會被覆蓋的內側圖形給遮擋住。

當然,CSS 還是可以實現這個圖形的,本文就將講解如何使用 CSS 實現上述炫彩三角邊框動畫。

通過角向漸變實現主體動畫

首先,我們還是需要借助角向漸變 conic-gradient 實現整個動畫的主體。

<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;
    }
}

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


手把手帶你使用CSS創建炫彩三角邊框動畫


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


基于矩形圖形得到三角形

OK,接下來,我們需要基于矩形圖形得到三角形圖形,對于外圈的三角形,我們可以通過 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);
}

即可得到如下效果:


手把手帶你使用CSS創建炫彩三角邊框動畫


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

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


手把手帶你使用CSS創建炫彩三角邊框動畫


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

但是,這樣做有兩個致命問題:

如果背景色不是實色而是漸變色,這個方法就失效了

這個方法實現的三角形邊框內側無法添加陰影效果

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

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

不過使用 mask 基于這樣一個圖形再實現一個小一號的三角形是比較麻煩的,我們相當于要實現這樣一個鏤空三角形圖形,示意圖如下:


手把手帶你使用CSS創建炫彩三角邊框動畫


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


手把手帶你使用CSS創建炫彩三角邊框動畫


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

當然,這里需要對 mask 掌握的比較深入,要使用 mask 切割一個內部鏤空的三角形示意圖如下:


手把手帶你使用CSS創建炫彩三角邊框動畫


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;
    }
}

我們就得到了一個內部鏤空的三角形邊框了:


手把手帶你使用CSS創建炫彩三角邊框動畫


利用 drop-shadow 添加上光影

最后一步就比較簡單了,由于上述三角形已經是一個鏤空圖形,這里直接使用 drop-shadow 給元素加上一層光影效果即可,不過由于使用了 clip-path,直接在原元素上添加的 drop-shadow 無法展示,這個好解決,我們只需要多套一層結構,將 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;
    }
}

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


手把手帶你使用CSS創建炫彩三角邊框動畫


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


使用 clip-path 剪切環形三角形

上面利用了 clip-path 剪切外三角形,mask 鏤空內三角形,經提醒,其實 clip-path 可以獨自裁剪出一個環形三角形。

上述代碼也可以簡化成:

<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: 200px;
    height: 200px;
    clip-path: 
        polygon(
        50% 0%,
        0% 100%,
        8% 100%,
        50% 15%,
        88% 93%,
        7% 93%,
        7% 100%,
        100% 100%
    );
    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;
    }
}

效果一樣:


手把手帶你使用CSS創建炫彩三角邊框動畫


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

這里有必要講解一下,使用 clip-path 切割一個環形圖案,是可以做到的。假設,我們需要一個正方形環形,其點順序如下:


手把手帶你使用CSS創建炫彩三角邊框動畫


{
    clip-path: polygon(0% 0%,0% 100%,25% 100%,25% 25%,75% 25%,75% 75%,25% 75%,14% 100%,100% 100%,100% 0%);
}

即可得到:


手把手帶你使用CSS創建炫彩三角邊框動畫


同理,需要得到一個三角形環形,只需要 7 個點即可:

{
    clip-path: polygon(50% 0%,0% 100%,13% 100%,50% 20%,85% 90%,8% 90%,8% 100%,100% 100%);
}

效果如下:


手把手帶你使用CSS創建炫彩三角邊框動畫


這里有個很好用的工具,輔助制作 clip-path 圖形, 感興趣可以試下:CSS clip-path Editor

最后

了解上述完整代碼,你可能還需要補齊一些基礎 CSS 知識,可以按需點進去了解:

clip-path:奇妙的 CSS shapes(CSS圖形)

CSS @property 自定義屬性:CSS @property,讓不可能變可能

利用 drop-shadow 生成不規則圖形的光源及邊框: 妙用 drop-shadow 實現線條光影效果

好了,本文到此結束,希望本文對你有所幫助


分享到:
標簽:CSS炫彩三角邊框 CSS動畫
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定