本篇文章給大家介紹一下利用CSS繪制三角形的N種技巧桌硫。有一定的參考價(jià)值照激,有需要的朋友可以參考一下,希望對(duì)大家有所幫助妒貌。
在一些面經(jīng)中,經(jīng)常能看到有關(guān) CSS 的題目都會(huì)有一道如何使用 CSS 繪制三角形抡笼,而經(jīng)常的回答通常也只有使用 border 進(jìn)行繪制一種方法苏揣。
而 CSS 發(fā)展到今天,其實(shí)有很多有意思的僅僅使用 CSS 就能繪制出來的三角形的方式推姻,本文將具體羅列講講平匈。
通過本文,你能了解到 6 種使用 CSS 繪制三角形的方式藏古,并且它們都非常好掌握增炭。當(dāng)然本文僅是拋磚引玉,CSS 日新月異拧晕,可能還有一些有意思的方法本文遺漏了隙姿,歡迎大家在留言區(qū)補(bǔ)充~
使用 border 繪制三角形
使用 border 實(shí)現(xiàn)三角形應(yīng)該是大部分人都掌握的,也是各種面經(jīng)中經(jīng)常出現(xiàn)的厂捞,利用了高寬為零的容器及透明的 border 實(shí)現(xiàn)输玷。
簡(jiǎn)單的代碼如下:
div {
border-top: 50px solid yellowgreen;
border-bottom: 50px solid deeppink;
border-left: 50px solid bisque;
border-right: 50px solid chocolate;
}
高寬為零的容器,設(shè)置不同顏色的 border:
這樣靡馁,讓任何三邊的邊框的顏色為 transparent
欲鹏,則非常容易得到各種角度的三角形:
CodePen Demo - 使用 border 實(shí)現(xiàn)三角形
使用 linear-gradient 繪制三角形
接著,我們使用線性漸變 linear-gradient
實(shí)現(xiàn)三角形臭墨。
它的原理也非常簡(jiǎn)單赔嚎,我們實(shí)現(xiàn)一個(gè) 45°
的漸變:
div {
width: 100px;
height: 100px;
background: linear-gradient(45deg, deeppink, yellowgreen);
}
讓它的顏色從漸變色變?yōu)閮煞N固定的顏色:
div {
width: 100px;
height: 100px;
background: linear-gradient(45deg, deeppink, deeppink 50%, yellowgreen 50%, yellowgreen 100%);
}
再讓其中一個(gè)顏色透明即可:
div {
background: linear-gradient(45deg, deeppink, deeppink 50%, transparent 50%, transparent 100%);
}
通過旋轉(zhuǎn) rotate
或者 scale
,我們也能得到各種角度胧弛,不同大小的三角形尤误,完整的 Demo 可以戳這里:
CodePen Demo - 使用線性漸變實(shí)現(xiàn)三角形
使用 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°
開始畫角向漸變圖,示意圖如下:
可以看到茴恰,在初始的時(shí)候颠焦,角向漸變圖形沒有到第二條邊的之前,都是三角形往枣,我們選取適合的角度伐庭,非常容易的可以得到一個(gè)三角形:
div {
background: conic-gradient(from 90deg at 50% 0, deeppink 0, deeppink 45deg, transparent 45.1deg);
}
上述代碼中的 deeppink 45deg, transparent 45.1deg
多出來的 0.1deg
是為了簡(jiǎn)單消除漸變產(chǎn)生的鋸齒的影響,這樣分冈,我們通過 conic-gradient
圾另,也輕松的得到了一個(gè)三角形。
同理雕沉,再配合旋轉(zhuǎn) rotate
或者 scale
集乔,我們也能得到各種角度,不同大小的三角形坡椒,完整的 Demo 可以戳這里:
CodePen Demo - 使用角向漸變實(shí)現(xiàn)三角形
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
渡嚣。
完整的代碼:
.triangle {
width: 141px;
height: 100px;
position: relative;
overflow: hidden;
&::before {
content: "";
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: deeppink;
transform-origin: left bottom;
transform: rotate(45deg);
}
}
CodePen Demo - transform: rotate 配合 overflow: hidden 實(shí)現(xiàn)三角形
使用 clip-path 繪制三角形
clip-path
一個(gè)非常有意思的 CSS 屬性梢睛。
clip-path
CSS 屬性可以創(chuàng)建一個(gè)只有元素的部分區(qū)域可以顯示的剪切區(qū)域肥印。區(qū)域內(nèi)的部分顯示,區(qū)域外的隱藏绝葡。剪切區(qū)域是被引用內(nèi)嵌的 URL 定義的路徑或者外部 SVG 的路徑深碱。
也就是說,使用 clip-path
可以將一個(gè)容器裁剪成任何我們想要的樣子藏畅。
通過 3 個(gè)坐標(biāo)點(diǎn)敷硅,實(shí)現(xiàn)一個(gè)多邊形功咒,多余的空間則會(huì)被裁減掉,代碼也非常簡(jiǎn)單:
div {
background: deeppink;
clip-path: polygon(0 0, 100% 0, 0 100%, 0 0);
}
CodePen Demo - 使用 clip-path 實(shí)現(xiàn)三角形
在這個(gè)網(wǎng)站中 -- CSS clip-path maker绞蹦,你可以快捷地創(chuàng)建簡(jiǎn)單的 clip-path
圖形力奋,得到對(duì)應(yīng)的 CSS 代碼。
利用字符繪制三角形
OK幽七,最后一種景殷,有些獨(dú)特,就是使用字符表示三角形澡屡。
下面列出一些三角形形狀的字符的十進(jìn)制 Unicode 表示碼猿挚。
? : ◄
? : ►
▼ : ▼
▲ : ▲
⊿ : ⊿
△ : △
譬如,我們使用 ▼
實(shí)現(xiàn)一個(gè)三角形 ▼驶鹉,代碼如下:
<div class="normal">▼ </div>
div {
font-size: 100px;
color: deeppink;
}
效果還是不錯(cuò)的:
然而绩蜻,需要注意的是,使用字符表示三角形與當(dāng)前設(shè)定的字體是強(qiáng)相關(guān)的室埋,不同的字體繪制出的同一個(gè)字符是不一樣的办绝,我在 Google Font 上隨機(jī)選取了幾個(gè)不同的字體,分別表示同一個(gè)字符词顾,得到的效果如下:
可以看到八秃,不同字體的形狀、大小及基線都是不一樣的肉盹,所以如果你想使用字符三角形昔驱,確保用戶的瀏覽器安裝了你指定的字體,否則上忍,不要使用這種方式骤肛。
完整的對(duì)比 Demo,你可以戳這里:
CodePen Demo - 使用字符實(shí)現(xiàn)三角形
最后
好了窍蓝,本文到此結(jié)束腋颠,關(guān)于使用 CSS 繪制三角的 6 種不同方式,希望對(duì)你有幫助 :)
原文地址:https://www.php.cn/css-tutorial-477443.html
更多編程相關(guān)知識(shí)吓笙,請(qǐng)?jiān)L問:編程視頻J缑怠!