在製做前端項目時,咱們常常會遇到製做下拉功能時有個小三角,除了咱們用圖片背景或者iconFont以外,咱們能夠用CSS來實現。前端
首先咱們製做一個正常的模塊,添加不一樣顏色的邊框來看下吧!spa
HTML代碼:3d
<div class\="demo\_0"\></div\>
CSS代碼:code
.demo_0 { width: 100px; height: 100px; margin: 100px auto; border: 20px solid transparent; border-color: black blue chocolate coral }
咱們會發現每一個邊框給咱們呈現出的是一個有棱角的四邊形的渲染效果,接下來咱們把這個模塊的width
和height
都設爲0,看下效果:blog
CSS代碼:圖片
.demo_0 { width: 0; height: 0; margin: 100px auto; border: 20px solid transparent; border-color: black blue chocolate coral }
這時咱們發現渲染出的效果是否是有四個三角形狀的圖像,這就是咱們模塊width
和height
都設爲0時,咱們給它設置邊框的渲染效果。
接下來咱們把某一個方向的border的border-width
設爲0來看下效果:it
CSS代碼:class
.demo_0 { width: 0; height: 0; margin: 100px auto; border: 20px solid transparent; border-color: black blue chocolate coral; border-bottom:0; }
到這裏咱們就能夠總結出:原理
(1)製做三角形須要將該模塊:寬度width
爲0,高度height
爲0;渲染
(2)製做不一樣方向的相似等腰三角形時,須要將某一個方向的border-方向:高度 solid coral
,相對方向border-相對方向不設置任何參數,其餘方向的border-其餘方向:**不一樣高度** solid **transparent**
;進設置三個方向便可。
(3)製做不一樣方向的相似直角三角形時,須要將上下某一個方向的border-(top|bottom):高度 solid coral
,左右某一方向的border-(left|right):**相同高度** solid **transparent**
;僅設置兩個方向便可。
.triangle-up { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-bottom: 100px solid coral; }
.triangle-down { width: 0; height: 0; border-left: 50px solid transparent; border-right: 50px solid transparent; border-top: 100px solid coral; }
.triangle-left { width: 0; height: 0; border-top: 50px solid transparent; border-right: 100px solid coral; border-bottom: 50px solid transparent; }
.triangle-right{ width: 0; height: 0; border-top: 50px solid transparent; border-left: 100px solid coral; border-bottom: 50px solid transparent; }
.triangle-topleft { width: 0; height: 0; border-top: 100px solid coral; border-right: 100px solid transparent; }
.triangle-topright { width: 0; height: 0; border-top: 100px solid coral; border-left: 100px solid transparent; }
(7)Triangle Bottom Left
.triangle-bottomleft { width: 0; height: 0; border-bottom: 100px solid coral; border-right: 100px solid transparent; }
(8)Triangle Bottom Right
.triangle-bottomRight { width: 0; height: 0; border-bottom: 100px solid coral; border-left: 100px solid transparent; }