關(guān)于CSS畫三角形的那些事兒

用CSS畫一個三角形藕溅,是不難的問題肤舞,但我卻掌握的不夠熟練,例如當(dāng)要求為畫一個直角三角形或者等腰三角形己莺,我就有點反應(yīng)不過來笤休。所以尖飞,在這篇中點透它,以后再見店雅,不含糊政基。

原理分析

用CSS畫三角形,實際上就是在一個框的四邊上做文章闹啦,如果有一個div沮明,為其設(shè)置100px的寬和高,并給其添加10px的黑色邊框窍奋,這四條邊形成一個閉合的正方形荐健,那么這四條邊如何分才能達(dá)到平均分配的效果呢?那只能是這樣:

邊的分法

可以看到琳袄,每一條邊單獨拉出來看就是一個梯形江场,而用CSS畫三角形其實就是從這個梯形下手,如何把這個梯形轉(zhuǎn)換為一個三角形扥問題窖逗。

其實原理很簡單址否,當(dāng)div的寬和高逐漸變小的時候,其中央的留白部分逐漸變小碎紊,四條邊向中央收縮佑附,例如,當(dāng)寬高都變成50px的時候仗考,就是這個樣子了:

寬高變小時候的DIV

可以想象帮匾,當(dāng)寬高為0的時候,中間的空白將不可見痴鳄,而邊框會恰好融合成為一個黑色的矩形,而此時缸夹,每一條邊就是一個三角形痪寻,當(dāng)為四條邊添加不同的顏色,并增大邊框?qū)挾戎笏洳眩梢悦魑乜闯龃藭r各邊的形態(tài):

div {
    width: 0; 
    height: 0;
    border-width: 50px;
    border-style: solid;
    border-color: green yellow black orange;
}
寬高為0

這時候就很清晰了橡类,我們只需要使其中三條邊不可見,則可見的部分就是一個三角形芽唇。為達(dá)目的顾画,很簡單取劫,將三條邊顏色設(shè)置為透明即可以。
border-color: transparent transparent black transparent;

當(dāng)當(dāng)當(dāng)當(dāng)~效果如下:

三角形

這個時候研侣,其他三個邊是存在的谱邪,只不過是透明的,那么庶诡,我們可不可以直接將其他三條邊取消呢惦银?——當(dāng)然不可以,沒有寬高度只有一條邊末誓,這個div還能夠出現(xiàn)嗎~

到此扯俱,最基本的三角形就簡單地完成了,可以看到喇澡,三角形的高就是div的底邊寬度迅栅,若要三角形更尖(斜度更大)一些,只需要加大底邊的寬度即可晴玖。而底邊的長度读存,則由兩條側(cè)邊的寬度決定,兩者加起來的寬度就是三角形底邊的寬度窜醉,而div頂部的一條邊框的寬度則只會影響三角形定點距離四條邊形成矩形的頂部的距離宪萄。

明白了原理之后,想畫什么三角形就很簡單了榨惰。例如拜英,一個直角三角形,如果直角邊為右邊和底邊的話琅催,則需要將右邊框設(shè)置為0了居凶。也就是border-right-width: 0;若要一個鈍角三角形,則將左右兩邊的邊框?qū)挾燃哟蠹纯梢蕴俾铡.?dāng)然也可以作出各個朝向的三角形了侠碧。

實現(xiàn)一個收藏Icon

學(xué)會了畫三角形,還可以在此基礎(chǔ)上來創(chuàng)造出許多形狀的圖形缠黍,例如下面這個常見的收藏圖案:

標(biāo)簽Icon

如何在一個div中使用CSS完成這樣的效果呢弄兜?通過觀察,不難發(fā)現(xiàn)瓷式,這個icon其實是一個正方形減去一個三角形構(gòu)成的替饿,所以我們的思路就很清晰了,將下面一個三角形變成透明就可以了~

div {
    width: 0;
    height: 0;
    border: 50px solid #ff5500; 
    border-bottom-color: transparent;
}

和偽元素結(jié)合實現(xiàn)雙箭頭

畫一個三角形是很簡單的贸典,那么畫一個像下面這樣的雙箭頭呢视卢?

雙箭頭

當(dāng)然,可以用兩個 div 來很快實現(xiàn)廊驼,但是為了不增加多余的標(biāo)簽据过,可以使用偽類實現(xiàn)這個效果惋砂。

div,
div:after {
    width: 0;
    height: 0;
    display: inline-block;
    border: 50px; 
    border-style: solid;
    border-color: transparent #ff5500 transparent transparent;
}
div::after {
    content: "";
    margin-top: -50px;
}

實現(xiàn)Tips氣泡

同樣借助偽元素,可以實現(xiàn)一個像下面這樣的氣泡绳锅。

氣泡

使用偽元素來實現(xiàn)氣泡右端的直角三角形西饵,通過position: absolute;來將它定位。代碼如下:

div {
  width: 90px;
  height: 40px;
  border-radius: 3px;
  background-color: #009bdb;
  position: relative; 
  color: #fff;
  font-size: 14px;
  padding-left: 10px;
  line-height: 40px;
}
div:after {
  content: "";
  width: 0;
  height: 0;
  display: inline-block;
  border-style: solid;
  border-width: 0 8px 8px 10px;
  border-color: transparent transparent transparent #009bdb;
  position: absolute;
  top: 12px; left: 100px;
}

從上面的例子可以看出榨呆,運(yùn)用的原理大同小異罗标,只要靈活變通,就可以實現(xiàn)形態(tài)各異的圖形組合积蜻。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末闯割,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子竿拆,更是在濱河造成了極大的恐慌宙拉,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,470評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件丙笋,死亡現(xiàn)場離奇詭異谢澈,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)御板,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,393評論 3 392
  • 文/潘曉璐 我一進(jìn)店門锥忿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人怠肋,你說我怎么就攤上這事敬鬓。” “怎么了笙各?”我有些...
    開封第一講書人閱讀 162,577評論 0 353
  • 文/不壞的土叔 我叫張陵钉答,是天一觀的道長。 經(jīng)常有香客問我杈抢,道長数尿,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,176評論 1 292
  • 正文 為了忘掉前任惶楼,我火速辦了婚禮右蹦,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘歼捐。我一直安慰自己何陆,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,189評論 6 388
  • 文/花漫 我一把揭開白布窥岩。 她就那樣靜靜地躺著,像睡著了一般宰缤。 火紅的嫁衣襯著肌膚如雪颂翼。 梳的紋絲不亂的頭發(fā)上晃洒,一...
    開封第一講書人閱讀 51,155評論 1 299
  • 那天,我揣著相機(jī)與錄音朦乏,去河邊找鬼球及。 笑死,一個胖子當(dāng)著我的面吹牛呻疹,可吹牛的內(nèi)容都是我干的吃引。 我是一名探鬼主播,決...
    沈念sama閱讀 40,041評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼刽锤,長吁一口氣:“原來是場噩夢啊……” “哼镊尺!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起并思,我...
    開封第一講書人閱讀 38,903評論 0 274
  • 序言:老撾萬榮一對情侶失蹤庐氮,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后宋彼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體弄砍,經(jīng)...
    沈念sama閱讀 45,319評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,539評論 2 332
  • 正文 我和宋清朗相戀三年输涕,在試婚紗的時候發(fā)現(xiàn)自己被綠了音婶。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,703評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡莱坎,死狀恐怖衣式,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情型奥,我是刑警寧澤瞳收,帶...
    沈念sama閱讀 35,417評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站厢汹,受9級特大地震影響螟深,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜烫葬,卻給世界環(huán)境...
    茶點故事閱讀 41,013評論 3 325
  • 文/蒙蒙 一界弧、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧搭综,春花似錦垢箕、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,664評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蒋歌,卻和暖如春帅掘,著一層夾襖步出監(jiān)牢的瞬間委煤,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,818評論 1 269
  • 我被黑心中介騙來泰國打工修档, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留碧绞,地道東北人。 一個月前我還...
    沈念sama閱讀 47,711評論 2 368
  • 正文 我出身青樓吱窝,卻偏偏與公主長得像讥邻,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子院峡,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,601評論 2 353

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