自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

2021年了,還只會(huì)一種 CSS 實(shí)現(xiàn)三角形的方式?

開發(fā) 前端
而 CSS 發(fā)展到今天,其實(shí)有很多有意思的僅僅使用 CSS 就能繪制出來(lái)的三角形的方式,本文將具體羅列講講。

在一些面經(jīng)中,經(jīng)常能看到有關(guān) CSS 的題目都會(huì)有一道如何使用 CSS 繪制三角形,而常見的回答通常也只有使用 border 進(jìn)行繪制一種方法。

而 CSS 發(fā)展到今天,其實(shí)有很多有意思的僅僅使用 CSS 就能繪制出來(lái)的三角形的方式,本文將具體羅列講講。

通過(guò)本文,你能了解到 6 種使用 CSS 繪制三角形的方式,并且它們都非常好掌握。

當(dāng)然本文僅是拋磚引玉,CSS 日新月異,可能還有一些有意思的方法本文遺漏了。

使用 border 繪制三角形

使用 border 實(shí)現(xiàn)三角形應(yīng)該是大部分人都掌握的,也是各種面經(jīng)中經(jīng)常出現(xiàn)的,利用了高寬為零的容器及透明的 border 實(shí)現(xiàn)。

簡(jiǎn)單的代碼如下:

  1. div { 
  2.   border-top: 50px solid yellowgreen; 
  3.   border-bottom: 50px solid deeppink; 
  4.   border-left: 50px solid bisque; 
  5.   border-right: 50px solid chocolate; 

高寬為零的容器,設(shè)置不同顏色的 border:

這樣,讓任何三邊的邊框的顏色為 transparent,則非常容易得到各種角度的三角形:

CodePen Demo - 使用 border 實(shí)現(xiàn)三角形[1]

使用 linear-gradient 繪制三角形

接著,我們使用線性漸變 linear-gradient 實(shí)現(xiàn)三角形。

它的原理也非常簡(jiǎn)單,我們實(shí)現(xiàn)一個(gè) 45° 的漸變:

  1. div { 
  2.   width: 100px; 
  3.   height: 100px; 
  4.   background: linear-gradient(45deg, deeppink, yellowgreen); 

讓它的顏色從漸變色變?yōu)閮煞N固定的顏色:

  1. div { 
  2.   width: 100px; 
  3.   height: 100px; 
  4.   background: linear-gradient(45deg, deeppink, deeppink 50%, yellowgreen 50%, yellowgreen 100%); 

再讓其中一個(gè)顏色透明即可:

  1. div { 
  2.   background: linear-gradient(45deg, deeppink, deeppink 50%, transparent 50%, transparent 100%); 

通過(guò)旋轉(zhuǎn) rotate 或者 scale,我們也能得到各種角度,不同大小的三角形,完整的 Demo 可以戳這里:

CodePen Demo - 使用線性漸變實(shí)現(xiàn)三角形[2]

使用 conic-gradient 繪制三角形

還是漸變,上述我們使用了線性漸變實(shí)現(xiàn)三角形,有意思的是,在漸變家族中,角向漸變 conic-gradient 也可以用于實(shí)現(xiàn)三角形。

方法在于,角向漸變的圓心點(diǎn)是可以設(shè)置的,類似于徑向漸變的圓心點(diǎn)也可以被設(shè)置。

我們將角向漸變的圓心點(diǎn)設(shè)置于 50% 0,也就是 center top,容器最上方的中間,再進(jìn)行角向漸變,漸變到一定的角度范圍內(nèi),都是三角形圖形。

假設(shè)我們有一個(gè) 200px x 100px 高寬的容器,設(shè)置其角向漸變圓心點(diǎn)為 50% 0:

并且,設(shè)置它從 90° 開始畫角向漸變圖,示意圖如下:

 å›¾ç‰‡

角向漸變逐漸變化動(dòng)畫

可以看到,在初始的時(shí)候,角向漸變圖形沒有到第二條邊的之前,都是三角形,我們選取適合的角度,非常容易的可以得到一個(gè)三角形:

  1. div { 
  2.     background: conic-gradient(from 90deg at 50% 0, deeppink 0, deeppink 45deg, transparent 45.1deg); 

利用 conic-gradient 實(shí)現(xiàn)的三角形

上述代碼中的 deeppink 45deg, transparent 45.1deg 多出來(lái)的 0.1deg 是為了簡(jiǎn)單消除漸變產(chǎn)生的鋸齒的影響,這樣,我們通過(guò) conic-gradient,也輕松的得到了一個(gè)三角形。

同理,再配合旋轉(zhuǎn) rotate 或者 scale,我們也能得到各種角度,不同大小的三角形,完整的 Demo 可以戳這里:

CodePen Demo - 使用角向漸變實(shí)現(xiàn)三角形[3]

transform: rotate 配合 overflow: hidden 繪制三角形

這種方法還是比較常規(guī)的,使用 transform: rotate 配合 overflow: hidden。一看就懂,一學(xué)就會(huì),簡(jiǎn)單的動(dòng)畫示意圖如下:

 å›¾ç‰‡

設(shè)置圖形的旋轉(zhuǎn)中心在左下角 left bottom,進(jìn)行旋轉(zhuǎn),配合 overflow: hidden。

完整的代碼:

  1. .triangle { 
  2.     width: 141px; 
  3.     height: 100px; 
  4.     position: relative
  5.     overflow: hidden; 
  6.      
  7.     &::before { 
  8.         content: ""
  9.         position: absolute
  10.         top: 0; 
  11.         left: 0; 
  12.         right: 0; 
  13.         bottom: 0; 
  14.         background: deeppink; 
  15.         transform-origin: left bottom; 
  16.         transform: rotate(45deg); 
  17.     } 

CodePen Demo - transform: rotate 配合 overflow: hidden 實(shí)現(xiàn)三角形[4]

使用 clip-path 繪制三角形

clip-path 一個(gè)非常有意思的 CSS 屬性。

clip-path CSS 屬性可以創(chuàng)建一個(gè)只有元素的部分區(qū)域可以顯示的剪切區(qū)域。區(qū)域內(nèi)的部分顯示,區(qū)域外的隱藏。剪切區(qū)域是被引用內(nèi)嵌的 URL 定義的路徑或者外部 SVG 的路徑。

也就是說(shuō),使用 clip-path 可以將一個(gè)容器裁剪成任何我們想要的樣子。

通過(guò) 3 個(gè)坐標(biāo)點(diǎn),實(shí)現(xiàn)一個(gè)多邊形,多余的空間則會(huì)被裁減掉,代碼也非常簡(jiǎn)單:

  1. div { 
  2.     background: deeppink; 
  3.     clip-path: polygon(0 0, 100% 0, 0 100%, 0 0); 

利用 clip-path 實(shí)現(xiàn)的三角形

CodePen Demo - 使用 clip-path 實(shí)現(xiàn)三角形[5]

在這個(gè)網(wǎng)站中 -- CSS clip-path maker[6],你可以快捷地創(chuàng)建簡(jiǎn)單的 clip-path 圖形,得到對(duì)應(yīng)的 CSS 代碼。

利用字符繪制三角形

OK,最后一種,有些獨(dú)特,就是使用字符表示三角形。

下面列出一些三角形形狀的字符的十進(jìn)制 Unicode 表示碼。

  1. ◄ : ◄  
  2. ► : ►  
  3. ▼ : ▼  
  4. ▲ : ▲ 
  5. ⊿ : ⊿ 
  6. △ : △ 

譬如,我們使用 ▼ 實(shí)現(xiàn)一個(gè)三角形 ▼,代碼如下:

  1. <div class="normal">&#9660; </div> 
  1. div { 
  2.     font-size: 100px; 
  3.     color: deeppink; 

效果還是不錯(cuò)的:

利用字符實(shí)現(xiàn)的三角形

然而,需要注意的是,使用字符表示三角形與當(dāng)前設(shè)定的字體是強(qiáng)相關(guān)的,不同的字體繪制出的同一個(gè)字符是不一樣的,我在 Google Font[7] 上隨機(jī)選取了幾個(gè)不同的字體,分別表示同一個(gè)字符,得到的效果如下:

可以看到,不同字體的形狀、大小及基線都是不一樣的,所以如果你想使用字符三角形,確保用戶的瀏覽器安裝了你指定的字體,否則,不要使用這種方式。

完整的對(duì)比 Demo,你可以戳這里:

CodePen Demo - 使用字符實(shí)現(xiàn)三角形[8]

最后

好了,本文到此結(jié)束,關(guān)于使用 CSS 繪制三角的 6 種不同方式,希望對(duì)你有幫助 :)

更多精彩 CSS 技術(shù)文章匯總在我的 Github -- iCSS[9] ,持續(xù)更新.

如果還有什么疑問(wèn)或者建議,可以多多交流,原創(chuàng)文章,文筆有限,才疏學(xué)淺,文中若有不正之處,萬(wàn)望告知。

參考資料

[1]CodePen Demo - 使用 border 實(shí)現(xiàn)三角形: https://codepen.io/Chokcoco/pen/GqrVpB

[2]CodePen Demo - 使用線性漸變實(shí)現(xiàn)三角形: https://codepen.io/Chokcoco/pen/RwKKOZw

[3]CodePen Demo - 使用角向漸變實(shí)現(xiàn)三角形: https://codepen.io/Chokcoco/pen/qBRRZJr

[4]CodePen Demo - transform: rotate 配合 overflow: hidden 實(shí)現(xiàn)三角形: https://codepen.io/Chokcoco/pen/LYxyyPv

[5]CodePen Demo - 使用 clip-path 實(shí)現(xiàn)三角形: https://codepen.io/Chokcoco/pen/GRrmEzY

[6]CSS clip-path maker: https://bennettfeely.com/clippy/

[7]Google Font: https://fonts.google.com/

[8]CodePen Demo - 使用字符實(shí)現(xiàn)三角形: https://codepen.io/Chokcoco/pen/abpWyzy

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

 

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

2022-03-16 14:27:49

CSS三角形前端

2021-07-16 05:59:27

CSS 技巧帶圓角的三角形

2024-09-05 11:20:54

2024-02-20 18:30:53

CSS屬性邊框

2016-10-20 13:36:28

WebRTC瀏覽器服務(wù)器

2021-10-19 10:09:21

三角形個(gè)數(shù)數(shù)組

2023-04-17 09:01:01

WebGL繪制三角形

2023-11-01 07:51:15

WebGPU3D 圖形

2021-08-29 18:32:18

CSS

2020-12-09 08:34:24

css生成器設(shè)計(jì)師

2023-05-06 07:23:57

2022-09-14 15:17:26

ArkUI鴻蒙

2018-03-02 15:54:37

三角形主機(jī)比特幣

2013-09-26 13:43:13

iOS開發(fā)OpenGL ES教程圖元

2021-09-24 09:22:26

AI 數(shù)據(jù)人工智能

2012-12-24 09:55:15

iOSUnity3D

2013-09-26 14:09:31

iOS開發(fā)OpenGL ES教程繪制矩形

2022-06-15 22:15:47

CSS視覺還原

2020-04-22 11:19:07

貪心算法動(dòng)態(tài)規(guī)劃

2023-04-26 07:42:16

WebGL圖元的類型
點(diǎn)贊
收藏

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