前言
還在用圖片制作箭頭,三角形,那就太lou了。css可以輕松搞定這一切,而且顏色大小想怎么變就怎么變,還不用擔心失真等問題。
先來看看這段代碼:
/**css*/
.d1{
width: 0;
height: 0;
border: 100px solid #339933;
}
/**html*/
<div class="d1"></div>
/**css*/
.d2{
width: 0;
height: 0;
border-width: 100px;
border-style: solid;
border-color:#FFCCCC #0099CC #996699 #339933;
}
/**html*/
<div class="d2"></div>

CSS繪制三角形和箭頭,不用再用圖片了
看了這兩段代碼,和效果圖,是不是有一點眉目了?原來畫三角形,只需要用元素的`border`來控制就可以了,`border-with`控制大小, `border-style`控制樣式(實線、虛線等), `border-color`控制顏色,分上、右、下、左
三角形示例
向下三角形
/**css*/
.d3{
margin-left: 10px;
float: left;
width: 0;
height: 0;
border-width: 100px;
border-style: solid;
border-color:#FFCCCC transparent transparent transparent;
}
/**html*/
<div class="d3"></div>

CSS繪制三角形和箭頭,不用再用圖片了
向左三角形
/**css*/
.d4{
margin-left: 110px;
float: left;
width: 0;
height: 0;
border-width: 100px;
border-style: solid;
border-color: transparent #0099CC transparent transparent;
}
/**html*/
<div class="d4"></div>

CSS繪制三角形和箭頭,不用再用圖片了
這里的`transparent`是透明的意思
接下來兩種就留給聰明的你了,相信你可以的,動手才知道原來這么簡單!
其實我們還可以通過,一種樣式,來實現不能角度的三角形,那就是利用CSS3里面的旋轉`transform:rotate(90deg)`。
/**css*/
.d4{
margin-left: 110px;
float: left;
width: 0;
height: 0;
border-width: 100px;
border-style: solid;
border-color: transparent #0099CC transparent transparent;
transform: rotate(90deg); /*順時針旋轉90°*/
}
/**html*/
<div class="d4"></div>

CSS繪制三角形和箭頭,不用再用圖片了
箭頭示例
向左箭頭
/**css*/
.left{
position: absolute;
}
.left:before,.left:after{
position: absolute;
content: '';
border-top: 10px transparent dashed;
border-left: 10px transparent dashed;
border-bottom: 10px transparent dashed;
border-right: 10px #fff solid;
}
.left:before{
border-right: 10px #0099CC solid;
}
.left:after{
left: 1px; /*覆蓋並錯開1px*/
border-right: 10px #fff solid;
}
/**html*/
<i class="left" ></i>

CSS繪制三角形和箭頭,不用再用圖片了
是不是發現箭頭和三角形是一樣的呢?發現了,說明你已經懂了,箭頭其實就是2個三角形,然后用白色三角形覆蓋藍色三角形,並且錯開1px,剛剛好就形成了箭頭。這就和《最強大腦》層疊消融項目是一樣的。
向上箭頭
/**css*/
.top{
position: absolute;
}
.top:before,.top:after{
position: absolute;
content: '';
border-top: 10px transparent dashed;
border-left: 10px transparent dashed;
border-right: 10px transparent dashed;
border-bottom: 10px #fff solid;
}
.top:before{
border-bottom: 10px #0099CC solid;
}
.top:after{
top: 1px; /*覆蓋並錯開1px*/
border-bottom: 10px #fff solid;
}
/**html*/
<i class="top" ></i>

向左箭頭(在向上箭頭基礎上做了90旋轉)
.left{ position: absolute; -webkit-transform: rotate(90deg); -moz-transform: rotate(90deg); -ms-transform: rotate(90deg); -o-transform: rotate(90deg); transform: rotate(90deg); } .left:before,.left:after{ position: absolute; content: ''; border-top: 5.5px transparent dashed; border-left: 5.5px transparent dashed; border-right: 5.5px transparent dashed; border-bottom: 5.5px #fff solid; } .left:before{ border-bottom: 5.5px #6E6E6E solid; } .left:after{ top: 1px; /*覆蓋並錯開1px*/ border-bottom: 5.5px #fff solid; }
/**html*/
<i class="top" ></i>