如何利用CSS寫一個六邊形?

千鋒IT技術學習發表於2018-06-07

眾所周知,一般情況下div所表現出來的形態是一個矩形,如果給它新增border-radius屬性,可以讓它成為一個圓角矩形或者是圓形,但是如果希望div表現出更多的形態來呢?

那麼我們就來講講如何用CSS來寫一個六邊形。

大家首先來看一下,一個六邊形,拆解開來的話,就是一個矩形加左右兩個三角形。

b20ee61ea78b429a985006f5cdd82868.png

三角形的話很好寫,用邊框border屬性就可以實現。

當我們給一個div非常粗的邊框,但是寬度和高度分別都設定為0的時候,我就會得到如下的圖形。

d78667c6254e425f8520b6e9cd9c94eb.png

3e5189f92e4e48b9b7933e1ccd200bdf.png

那麼我們只要把其中一條邊框給刪除,另外兩條邊框變成透明,這樣就能得到一個三角形。

089578ec307b484fa2f1acc5bd4a0fc9.png

c5561f5d27294a819e318d778062333a.png

那麼我們只要把兩個三角形和一個矩形拼起來,這樣就構成了一個六邊形。

有些人要問,這樣做一個結構,我不是要用三個元素才能達到?太過繁瑣了!

但其實不需要,我們只要結合正確的選擇器,只用一個元素就可以達到。

首先將六邊形解構成中間矩形,兩邊三角形,然後我們將中間矩形用div表現出來。

dee58dc698014ed098fd7bc7f3a1be18.png

假設六邊形的邊都是120px,利用三角函式計算出X的值,雙倍之後就是矩形另一條邊的長。

33e52ba0a521485ba3200ccec5d46b7d.png

然後我們利用:after和:before這兩個選擇器做出兩邊的三角形。計算出Y邊長,就是三角形的邊框長度。

07ce7e2590e14bf09ee6186a3fd348e4.png

注意上下邊框使用的寬度。

0d415bb96ce8409b9d5ce12363472971.png

14d7edbe1ed84852846afff9d65c105a.png

然後以box為作為定位調整一下三角形的位置。

de2a4f9248dd4021851581c77b5f066b.png

2e851752505f46babca86db07f5d2b8c.png

另一邊使用:after做相同處理。

e199cc43b2b2465ea5aadf107006760f.png

3f035d60b9dd45fcaddec2bbf83e907c.png

將中間矩形的顏色修改過來就得到了一個六邊形。

cacf367ca6a84bf1995858d41cd66d00.png


相關文章