利用css中的border製作小三角形
總所周知,元素的邊框 (border) 是圍繞元素內容和內邊距的一條或多條線。 CSS border 屬性允許規定元素邊框的樣式、寬度和顏色。
在 HTML 中,我們使用表格來建立文字週圍的邊框,但是通過使用 CSS 邊框屬性,我們可以建立出效果出色的邊框,並且可以應用於任何元素。
元素外邊距內就是元素的的邊框 (border)。元素的邊框就是圍繞元素內容和內邊據的一條或多條線。
我們來看一些設定了border的元素的效果
div{
width: 100px; height: 20px;
border: 20px solid red;
border-right-color: green;
border-bottom-color: blue;
border-left-color: black;
}
複製程式碼
效果如下:
當我們試著去減小盒子的寬高,甚至去掉寬高時:
div{
width: 20px; height: 20px;
border: 20px solid red;
border-right-color: green;
border-bottom-color: blue;
border-left-color: black;
}
複製程式碼
效果如下:
div{
width: 0;
border: 20px solid red;
border-right-color: green;
border-bottom-color: blue;
border-left-color: black;
}
複製程式碼
效果如下:
此時我們發現當元素的寬高為0時就會變成擠在一起的四個三角形。因此,我們可以想到,如果把其中的三條邊框的顏色定義為透明色transparent,那麼我們就會得到一個三角形!
將三條邊框的顏色設定為透明色:
p{
width: 0;
border: 20px solid transparent;
border-top-color: blue;
}
複製程式碼
效果如下:
通過程式碼我們發現小三角的朝向是與設定了不透明顏色的那條邊名字相反的方向。
例如,我們設定了border-top-color: blue; 小三角的朝向是朝下的。
小提示
在我們使用小三角時,因為四條邊框組成了一個矩形,我們只是將其他三條邊設定了透明色,它們仍然在文件裡佔據著位置,為了方便佈局,我們可以設定小三角相對的那條邊為none;具體原理如下:
div{
width: 0; height: 0;
border-top: 20px solid blue;
border-left: 20px solid red;
border-right: 20px solid green;
border-bottom: none;
}
複製程式碼
效果如下:
div{
width: 0;
bordet:20px solid transparent;
border-top: 20px solid blue;
border-bottom: none;
}
複製程式碼
效果如下:
小應用
當我們要製作這種佈局時,可以用此種方法制作小三角,不必再用img或backgroud去實現。
<style>
ul {
overflow: hidden;
}
li {
list-style: none;
line-height: 60px;
text-align: center;
float: left;
width: 120px;
background: #f1f1f1;
margin-right: 1px
}
li p {
width: 0;
border: 8px solid transparent;
border-bottom-color: #666;
border-top: none;
float: right;
margin: 26px 10px 0 0
}
</style>
複製程式碼
<ul>
<li>我的課程<p></p></li>
<li>最近瀏覽<p></p></li>
<li>聯絡客服<p></p></li>
</ul>
複製程式碼
效果如下:
小擴充套件
<style>
div{
margin: 50px
}
div:nth-child(1){
width: 0;
border: 30px solid transparent;
border-bottom: 80px solid red;
/* border-top: none; */
}
div:nth-child(2){
width: 0;
border-top: 30px solid blue;
border-right:none;
border-left: 90px solid transparent;
border-bottom: none;
}
div:nth-child(3){
width: 0;
border-top: 30px solid blue;
border-right:90px solid transparent;
border-left: 10px solid transparent;
border-bottom: none;
}
</style>
複製程式碼
<div></div>
<div></div>
<div></div>
複製程式碼
效果如下:
我們還可以設定把border的邊設定成不同的畫素,以達到想要的效果。