1. 程式人生 > >使用css設定三角形

使用css設定三角形

1.在開發中,有時候會用到一些小三角形來強調或者標記元素,這樣以便區分不同的專案,然後把三角形繪製成一個比較明顯的顏色,就達到效果了,那怎麼才能畫出三角形呢,之前我也不清楚,最近看到了有些網頁在使用,在進行標記的時候,都是使用的是背景圖片進行標記,這樣在網頁顯示的時候,感覺有點生硬,畢竟圖片的載入沒有css載入那麼順暢

下面看一段程式碼:這裡設定了一個span 元素為塊級元素,分別設定border的四邊都為不同的顏色:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 <head>
 4     <meta 
charset="UTF-8"> 5 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 6 <meta http-equiv="X-UA-Compatible" content="ie=edge"> 7 <title>Document</title> 8 <style> 9 div { 10 width: 100%; 11 margin: 50px 0
; 12 text-align: center; 13 } 14 span { 15 position: relative; 16 margin: 0 auto; 17 display: block; 18 width: 50px; 19 height: 50px; 20 border-style: solid; 21 border-width: 50px; 22 border-top-color
: red; 23 border-left-color: blue; 24 border-bottom-color: yellow; 25 border-right-color: black; 26 } 27 </style> 28 </head> 29 <body> 30 <div class="as">如何設定三角形?</div> 31 <div class="jindaobox"> 32 <span class="sanjiao"> 33 </span> 34 </div> 35 </body> 36 </html>

執行結果:發現四面的邊框,居然是這種梯形的結構,如果把梯形上底變為0,不就是我們想要的三角形了麼,而且這是使用html 和css做不來的,不存在使用靜態頁面就可以實行,不存在圖片的不連續顯示問題;

接下來就是把梯形的上底變為0 了

上底變為0 很簡單,只要把元素的高和寬設定為0就可以了

width:----->0         得到上下兩種箭頭

height:------->0      得到左右兩種箭頭

 

1.當我們想要上箭頭的時候,就把元素的左右邊框和下邊框去掉

2.當我們想要下箭頭的時候,就把元素的左右邊框和上邊框去掉

3.當我們想要左箭頭的時候,就把上下邊框和右邊框去掉

4.當我們想要右箭頭的時候,就把上下邊框和左邊框去掉

 

想法是好的,試了一下,想要上加箭頭:設定css如下:

 1 span {
 2             position: relative;
 3             margin: 0 auto;
 4             display: block;
 5             width: 0px;
 6             height: 0px;
 7             border-style: solid;
 8             border-width: 50px;
 9 
10             /* 設定上邊框和左右邊框寬度為0 開始*/
11             border-top-width: 0;
12             border-left-width: 0;
13             border-right-width: 0;
14             /* 設定上邊框和左右邊框寬度為0 開始*/
15 
16             border-top-color: red;
17             border-left-color: blue;
18             border-bottom-color: yellow;
19             border-right-color: black;
20         }

執行結果:發現不行啊,什麼都沒有

那我們換個方法:既然設定寬度不行,那我們就設定顏色吧,只要把上,左,右邊框的顏色設定為透明的,不就可以了麼,css 中,剛好有一個設定顏色為透明的值

 1  span {
 2             position: relative;
 3             margin: 0 auto;
 4             display: block;
 5             width: 0px;
 6             height: 0px;
 7             border-style: solid;
 8             border-width: 50px;
 9 
10             /* 設定上邊框和左右邊框寬度為0 開始*/
11             border-top-color: transparent;
12             border-left-color: transparent;
13             border-right-color: transparent;
14             /* 設定上邊框和左右邊框寬度為0 開始*/
15 
16             /* border-top-color: red;
17             border-left-color: blue; */
18             border-bottom-color: yellow;
19             /* border-right-color: black; */
20         }

執行結果:OK,大功告成!!!

 

設定下箭頭:

 1   span {
 2             position: relative;
 3             margin: 0 auto;
 4             display: block;
 5             width: 0px;
 6             height: 0px;
 7             border-style: solid;
 8             border-width: 50px;
 9 
10             /* 設定上邊框和左右邊框寬度為0 開始*/
11             border-bottom-color: transparent;
12             border-left-color: transparent;
13             border-right-color: transparent;
14             /* 設定上邊框和左右邊框寬度為0 開始*/
15 
16             border-top-color: red;
17             /* border-left-color: blue;
18             border-bottom-color: yellow;
19             border-right-color: black; */
20         }

設定左箭頭:

 1  span {
 2             position: relative;
 3             margin: 0 auto;
 4             display: block;
 5             width: 0px;
 6             height: 0px;
 7             border-style: solid;
 8             border-width: 50px;
 9 
10             /* 設定上邊框和左右邊框寬度為0 開始*/
11             border-top-color: transparent;
12             border-bottom-color: transparent;
13             /* border-left-color: transparent; */
14             border-right-color: transparent;
15             /* 設定上邊框和左右邊框寬度為0 開始*/
16 
17             /* border-top-color: red; */
18             border-left-color: blue;
19             /* border-bottom-color: yellow;
20             border-right-color: black; */
21         }

 

設定右箭頭:

 1  span {
 2             position: relative;
 3             margin: 0 auto;
 4             display: block;
 5             width: 0px;
 6             height: 0px;
 7             border-style: solid;
 8             border-width: 50px;
 9 
10             border-top-color: transparent;
11             border-bottom-color: transparent;
12             border-left-color: transparent;
13             /* border-right-color: transparent; */
14 
15             /* border-top-color: red;
16             border-left-color: blue;
17             border-bottom-color: yellow; */
18             border-right-color: black;
19         }

 

當然,css 還可寫在一起,這樣看起來要簡單一些:

 1   span {
 2             position: relative;
 3             margin: 0 auto;
 4             display: block;
 5             width: 0px;
 6             height: 0px;
 7             /* 先後設定上右下左的border-color屬性都是一樣的,需要哪個箭頭,再設定哪個方向的顏色屬性,這樣,最後設定的屬性覆蓋了前面的屬性,就變成箭頭了 */
 8             border: 50px solid transparent;
 9             border-top-color: red;
10         }

以上,是使用html和css兩項綜合起來設定的箭頭,可以不可以再設定簡單一點呢?

 

下面,我採用class 屬性來設定箭頭,當需要箭頭的時候,直接加上這個class 屬性就可以,當不想要箭頭的時候,去除調這個類就好了

下面來看一個例子:

 1 <!DOCTYPE html>
 2 <html lang="en">
 3 
 4 <head>
 5     <meta charset="UTF-8">
 6     <meta name="viewport" content="width=device-width, initial-scale=1.0">
 7     <meta http-equiv="X-UA-Compatible" content="ie=edge">
 8     <title>Document</title>
 9     <style>
10         div {
11             width: 100%;
12             margin: 50px 0;
13             text-align: center;
14         }
15 
16         .jindaobox {
17             position: relative;
18             width: 980px;
19             margin: 20px auto;
20 
21         }
22 
23         li {
24             list-style: none;
25             float: left;
26             position: relative;
27             border: 1px solid #eee;
28             margin-right: 30px;
29             padding: 10px 20px;
30             border-radius: 5px;
31             -webkit-border-radius: 5px;
32             -moz-border-radius: 5px;
33             -ms-border-radius: 5px;
34             -o-border-radius: 5px;
35         }
36 
37         .active {
38             border: 1px solid red !important;
39 
40         }
41 
42         .active::after {
43             position: absolute;
44             content: "";
45             height: 0;
46             width: 0;
47 
48             border: 8px solid transparent;
49             border-top-color: red;
50 
51             top: 0;
52             left: 0;
53             right: 0;
54             margin: auto;
55         }
56     </style>
57 </head>
58 
59 <body>
60     <div class="as">請選擇你喜歡的電影</div>
61     <ul class="jindaobox">
62         <li class="lis">飛龍在天</li>
63         <li class="lis  active">紫川</li>
64         <li class="lis">封神演義</li>
65         <li class="lis  active">風雲第一刀</li>
66         <li class="lis">天外飛仙</li>
67     </ul>
68 
69 </body>
70 
71 </html>

執行結果:

這樣,就實現了使用class 屬性控制箭頭的方式,當需要選中時,給li 元素加上一個active class 屬性即可,當不需要時,就去除active class 屬性