在一些面經中,常常能看到有關 CSS 的題目都會有一道如何使用 CSS 繪製三角形,而常常的回答一般也只有使用 border 進行繪製一種方法。前端
而 CSS 發展到今天,其實有不少有意思的僅僅使用 CSS 就能繪製出來的三角形的方式,本文將具體羅列講講。git
經過本文,你能瞭解到 6 種使用 CSS 繪製三角形的方式,而且它們都很是好掌握。固然本文僅是拋磚引玉,CSS 突飛猛進,可能還有一些有意思的方法本文遺漏了,歡迎你們在留言區補充~github
使用 border 實現三角形應該是大部分人都掌握的,也是各類面經中常常出現的,利用了高寬爲零的容器及透明的 border 實現。瀏覽器
簡單的代碼以下:字體
div { border-top: 50px solid yellowgreen; border-bottom: 50px solid deeppink; border-left: 50px solid bisque; border-right: 50px solid chocolate; }
高寬爲零的容器,設置不一樣顏色的 border:動畫
這樣,讓任何三邊的邊框的顏色爲 transparent
,則很是容易獲得各類角度的三角形:網站
CodePen Demo - 使用 border 實現三角形google
接着,咱們使用線性漸變 linear-gradient
實現三角形。spa
它的原理也很是簡單,咱們實現一個 45°
的漸變:code
div { width: 100px; height: 100px; background: linear-gradient(45deg, deeppink, yellowgreen); }
讓它的顏色從漸變色變爲兩種固定的顏色:
div { width: 100px; height: 100px; background: linear-gradient(45deg, deeppink, deeppink 50%, yellowgreen 50%, yellowgreen 100%); }
再讓其中一個顏色透明便可:
div { background: linear-gradient(45deg, deeppink, deeppink 50%, transparent 50%, transparent 100%); }
經過旋轉 rotate
或者 scale
,咱們也能獲得各類角度,不一樣大小的三角形,完整的 Demo 能夠戳這裏:
仍是漸變,上述咱們使用了線性漸變實現三角形,有意思的是,在漸變家族中,角向漸變 conic-gradient
也能夠用於實現三角形。
方法在於,角向漸變的圓心點是能夠設置的,相似於徑向漸變的圓心點也能夠被設置。
咱們將角向漸變的圓心點設置於 50% 0
,也就是 center top
,容器最上方的中間,再進行角向漸變,漸變到必定的角度範圍內,都是三角形圖形。
假設咱們有一個 200px x 100px
高寬的容器,設置其角向漸變圓心點爲 50% 0
:
而且,設置它從 90°
開始畫角向漸變圖,示意圖以下:
能夠看到,在初始的時候,角向漸變圖形沒有到第二條邊的以前,都是三角形,咱們選取適合的角度,很是容易的能夠獲得一個三角形:
div { background: conic-gradient(from 90deg at 50% 0, deeppink 0, deeppink 45deg, transparent 45.1deg); }
上述代碼中的 deeppink 45deg, transparent 45.1deg
多出來的 0.1deg
是爲了簡單消除漸變產生的鋸齒的影響,這樣,咱們經過 conic-gradient
,也輕鬆的獲得了一個三角形。
同理,再配合旋轉 rotate
或者 scale
,咱們也能獲得各類角度,不一樣大小的三角形,完整的 Demo 能夠戳這裏:
這種方法仍是比較常規的,使用 transform: rotate
配合 overflow: hidden
。一看就懂,一學就會,簡單的動畫示意圖以下:
設置圖形的旋轉中心在左下角 left bottom
,進行旋轉,配合 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 實現三角形
clip-path
一個很是有意思的 CSS 屬性。
clip-path
CSS 屬性能夠建立一個只有元素的部分區域能夠顯示的剪切區域。區域內的部分顯示,區域外的隱藏。剪切區域是被引用內嵌的 URL 定義的路徑或者外部 SVG 的路徑。
也就是說,使用 clip-path
能夠將一個容器裁剪成任何咱們想要的樣子。
經過 3 個座標點,實現一個多邊形,多餘的空間則會被裁減掉,代碼也很是簡單:
div { background: deeppink; clip-path: polygon(0 0, 100% 0, 0 100%, 0 0); }
CodePen Demo - 使用 clip-path 實現三角形
在這個網站中 -- CSS clip-path maker,你能夠快捷地建立簡單的 clip-path
圖形,獲得對應的 CSS 代碼。
OK,最後一種,有些獨特,就是使用字符表示三角形。
下面列出一些三角形形狀的字符的十進制 Unicode 表示碼。
◄ : ◄ ► : ► ▼ : ▼ ▲ : ▲ ⊿ : ⊿ △ : △
譬如,咱們使用 ▼
實現一個三角形 ▼,代碼以下:
<div class="normal">▼ </div>
div { font-size: 100px; color: deeppink; }
效果仍是不錯的:
然而,須要注意的是,使用字符表示三角形與當前設定的字體是強相關的,不一樣的字體繪製出的同一個字符是不同的,我在 Google Font 上隨機選取了幾個不一樣的字體,分別表示同一個字符,獲得的效果以下:
能夠看到,不一樣字體的形狀、大小及基線都是不同的,因此若是你想使用字符三角形,確保用戶的瀏覽器安裝了你指定的字體,不然,不要使用這種方式。
完整的對比 Demo,你能夠戳這裏:
好了,本文到此結束,關於使用 CSS 繪製三角的 6 種不一樣方式,但願對你有幫助 :)
想 Get 到最有意思的 CSS 資訊,千萬不要錯過個人公衆號 -- iCSS前端趣聞 😄
更多精彩 CSS 技術文章彙總在個人 Github -- iCSS ,持續更新,歡迎點個 star 訂閱收藏。
若是還有什麼疑問或者建議,能夠多多交流,原創文章,文筆有限,才疏學淺,文中如有不正之處,萬望告知。