0%

css实现实心三角形

本文使用css来实现各个朝向的等腰三角形,涉及知识点border,且通过transform中的rotate来改箭头的朝向。来看一下效果吧。

想用一个div元素的boder来实现一下等腰(20px)三角形,需要了解border的“魔幻”之处

设置div边框20px,宽20px,高20px)

示意图

1
2
3
4
5
6
.trangle {
width: 20px;
height: 20px;
border: 20px solid;
border-color: red green blue orange;
}

设置边框20px,宽0,高0)

示意图

1
2
3
4
5
6
.trangle {
width: 20px;
height: 20px;
border: 20px solid;
border-color: red green blue orange;
}

根据所需保留对应的边框,并可以通过旋转来实现其他角度的三角行

html

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<div class="trangle-group">
<div class="trangle" direction="top">
</div>
<div class="trangle" direction="right">
</div>
<div class="trangle" direction="bottom">
</div>
<div class="trangle" direction="left">
</div>
<div class="trangle" direction="top-left">
</div>
<div class="trangle" direction="top-right">
</div>
<div class="trangle" direction="bottom-left">
</div>
<div class="trangle" direction="bottom-right">
</div>
</div>

css

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
.trangle {
width: 0;
height: 0;
border: 20px solid transparent;
}

.trangle[direction=top] {
border-bottom-color: red;
border-top-width: 0;
}

.trangle[direction=top-left],
.trangle[direction=left-top] {
border-top-color: red;
border-bottom-width: 0;
-webkit-transform: rotate(135deg);
transform: rotate(135deg);
}

.trangle[direction=right] {
border-left-color: red;
border-right-width: 0;
}

.trangle[direction=bottom] {
border-top-color: red;
border-bottom-width: 0;
}

.trangle[direction=left] {
border-right-color: red;
border-left-width: 0;
}

.trangle[direction=top-left],
.trangle[direction=left-top] {
border-top-color: red;
border-bottom-width: 0;
-webkit-transform: rotate(135deg);
transform: rotate(135deg);
}

.trangle[direction=top-right],
.trangle[direction=left-right] {
border-top-color: red;
border-bottom-width: 0;
-webkit-transform: rotate(225deg);
transform: rotate(225deg);
}

.trangle[direction=bottom-left],
.trangle[direction=left-bottom] {
border-bottom-color: red;
border-top-width: 0;
-webkit-transform: rotate(225deg);
transform: rotate(225deg);
}

.trangle[direction=bottom-right],
.trangle[direction=right-bottom] {
border-bottom-color: red;
border-top-width: 0;
-webkit-transform: rotate(135deg);
transform: rotate(135deg);
}