分享CSS繪制三角形的6種技巧(轉(zhuǎn)載)

本篇文章給大家介紹一下利用CSS繪制三角形的N種技巧桌硫。有一定的參考價(jià)值照激,有需要的朋友可以參考一下,希望對(duì)大家有所幫助妒貌。

image

在一些面經(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:

1.png

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

2.png

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

https://codepen.io/Chokcoco/pen/GqrVpB

使用 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);
}
3.png

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

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

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

div {
  background: linear-gradient(45deg, deeppink, deeppink 50%, transparent 50%, transparent 100%);
}
5.png

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

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

https://codepen.io/Chokcoco/pen/RwKKOZw

使用 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

6.png

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

7.gif

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

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

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

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

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

https://codepen.io/Chokcoco/pen/qBRRZJr

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

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

9.gif

設(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)三角形

https://codepen.io/Chokcoco/pen/LYxyyPv

使用 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);
}
10.png

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

https://codepen.io/Chokcoco/pen/GRrmEzY

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

11.png

利用字符繪制三角形

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

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

? : ◄ 
? : ► 
▼ : ▼ 
▲ : ▲
⊿ : ⊿
△ : △

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

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

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

12.png

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

13.png

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

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

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

https://codepen.io/Chokcoco/pen/abpWyzy

最后

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

原文地址:https://www.php.cn/css-tutorial-477443.html

更多編程相關(guān)知識(shí)吓笙,請(qǐng)?jiān)L問:編程視頻J缑怠!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末面睛,一起剝皮案震驚了整個(gè)濱河市絮蒿,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌叁鉴,老刑警劉巖土涝,帶你破解...
    沈念sama閱讀 221,548評(píng)論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異幌墓,居然都是意外死亡但壮,警方通過查閱死者的電腦和手機(jī)冀泻,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,497評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來蜡饵,“玉大人弹渔,你說我怎么就攤上這事∷莼觯” “怎么了捞附?”我有些...
    開封第一講書人閱讀 167,990評(píng)論 0 360
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)您没。 經(jīng)常有香客問我鸟召,道長(zhǎng),這世上最難降的妖魔是什么氨鹏? 我笑而不...
    開封第一講書人閱讀 59,618評(píng)論 1 296
  • 正文 為了忘掉前任欧募,我火速辦了婚禮,結(jié)果婚禮上仆抵,老公的妹妹穿的比我還像新娘跟继。我一直安慰自己,他們只是感情好镣丑,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,618評(píng)論 6 397
  • 文/花漫 我一把揭開白布舔糖。 她就那樣靜靜地躺著,像睡著了一般莺匠。 火紅的嫁衣襯著肌膚如雪金吗。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 52,246評(píng)論 1 308
  • 那天趣竣,我揣著相機(jī)與錄音摇庙,去河邊找鬼。 笑死遥缕,一個(gè)胖子當(dāng)著我的面吹牛卫袒,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播单匣,決...
    沈念sama閱讀 40,819評(píng)論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼夕凝,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了户秤?” 一聲冷哼從身側(cè)響起码秉,我...
    開封第一講書人閱讀 39,725評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎虎忌,沒想到半個(gè)月后泡徙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體橱鹏,經(jīng)...
    沈念sama閱讀 46,268評(píng)論 1 320
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡膜蠢,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,356評(píng)論 3 340
  • 正文 我和宋清朗相戀三年堪藐,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片挑围。...
    茶點(diǎn)故事閱讀 40,488評(píng)論 1 352
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡礁竞,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出杉辙,到底是詐尸還是另有隱情模捂,我是刑警寧澤,帶...
    沈念sama閱讀 36,181評(píng)論 5 350
  • 正文 年R本政府宣布蜘矢,位于F島的核電站狂男,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏品腹。R本人自食惡果不足惜岖食,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,862評(píng)論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望舞吭。 院中可真熱鬧泡垃,春花似錦、人聲如沸羡鸥。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,331評(píng)論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽惧浴。三九已至存和,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間衷旅,已是汗流浹背哑姚。 一陣腳步聲響...
    開封第一講書人閱讀 33,445評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留芜茵,地道東北人叙量。 一個(gè)月前我還...
    沈念sama閱讀 48,897評(píng)論 3 376
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像九串,于是被迫代替她去往敵國(guó)和親绞佩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,500評(píng)論 2 359

推薦閱讀更多精彩內(nèi)容

  • 通常情況下猪钮,用 CSS 來實(shí)現(xiàn)一些簡(jiǎn)單的圖形會(huì)比使用圖片更有優(yōu)勢(shì)品山,譬如: CSS 可以隨時(shí)調(diào)整圖形的顏色; CSS...
    西山以南閱讀 1,593評(píng)論 6 6
  • 轉(zhuǎn)自:https://ydmgirls.com/posts/6GzfGe[https://ydmgirls.com...
    程序媛萌小雪Mxx閱讀 1,747評(píng)論 0 0
  • 1烤低、利用 border 屬性實(shí)現(xiàn)三角形這個(gè)原理很簡(jiǎn)單肘交,我我們先看下面的圖,這是一個(gè)邊框?yàn)?20px 的 div扑馁,看...
    公子七閱讀 4,390評(píng)論 0 6
  • css是個(gè)神奇的東西涯呻,在學(xué)習(xí)的過程中你會(huì)發(fā)現(xiàn)繪畫和藝術(shù)的美,金字塔是世界八大奇跡之一凉驻,設(shè)計(jì)精巧伤靠,計(jì)算精密柑肴,令世人贊...
    小丑_26c0閱讀 749評(píng)論 0 0
  • 在做UI(頁面重構(gòu))的時(shí)候,免不了和各種小圖標(biāo)打交道氮双,這其中最多的應(yīng)該是三角形以及箭頭效诅,一般情況下可以通過偽類使用...
    碼農(nóng)氵閱讀 567評(píng)論 0 0