使用CSS绘制箭头
转载于网址
原文介绍了使用纯CSS绘制各种箭头的方法,在此基础上,本文再加上使用CSS3的方法
基本原理
通过截取border的部分拐角实现。
梯形
1
2
3
4
5
6
7
8
9
#demo1 {
border: 10px solid black;
width: 10px;
height: 10px;
border-left-color: red;
}
<div id="demo1"></div>
三角形
1
2
3
4
5
6
7
8
9
#demo2 {
border: 10px solid #fff;
border-left-color: red;
width: 0;
height: 0;
}
<div id="demo2"></div>
任意角度的三角形
调整边框的宽度就可以配置出任意角度的三角形(这里的角度是指三角形三个角的度数)
1
2
3
4
5
6
7
8
9
#demo3 {
border: 10px solid transparent;
border-left: 20px solid #000;
width: 0;
height: 0;
}
<div id="demo3"></div>
通过CSS的伪元素实现
伪元素实现
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
#demo4 {
position: relative;
}
#demo4:after {
border: 10px solid transparent;
border-left-color: red;
position: absolute;
width: 0;
height: 0;
content: "";
}
<span id="demo4">伪元素实现</span>
伪元素实现三角线箭头
通过伪元素绘制出的两个,一个与背景色相同覆盖部分红色箭头,形成三角线
伪元素实现2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#demo5 {
position: relative;
}
#demo5:after, #demo5:before {
border: 10px solid transparent;
border-left: 10px solid #fff;
width: 0;
height: 0;
position: absolute;
top: 0;
right: -20px;
content: ' '
}
#demo5:before {
border-left-color: #f00;
right: -26px;
}
<span id="demo5">伪元素实现2</span>
三角线分割的Tab页
- TAB1
- TAB2
- TAB3
- TAB4
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
ul#demo6 {
list-style: none;
height: 24px;
overflow: hidden;
}
#demo6 li {
float: left;
padding-left: 12px;
position: relative;
margin: 0 20px 12px -19px;
}
#demo6 li:after, #demo6 li:before {
border: 10px solid transparent;
border-left: 10px solid #fff;
width: 0;
height: 0;
position: absolute;
top: 0;
right: -20px;
content: ' '
}
#demo6 li:before {
border-left-color: blue;
right: -21px;
}
<ul id="demo6">
<li>TAB1</li>
<li>TAB2</li>
<li>TAB3</li>
<li>TAB4</li>
</ul>
三角形跟矩形组合成提示框
这里还有另一种效果,使用三角形跟矩形组合成提示框,代码来自这篇文章: Css arrows and shapes without markup
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
#demo {
width: 100px;
height: 100px;
background-color: #ccc;
position: relative;
border: 4px solid #333;
}
#demo:after, #demo:before {
border: solid transparent;
content: ' ';
height: 0;
left: 100%;
position: absolute;
width: 0;
}
#demo:after {
border-width: 9px;
border-left-color: #ccc;
top: 15px;
}
#demo:before {
border-width: 14px;
border-left-color: #333;
top: 10px;
}
<div id="demo"></div>
CSS3 transform实现
使用旋转
1
2
3
4
5
6
7
8
9
10
11
#demo7 {
border:#666 solid;
border-width:2px 2px 0 0;
width:15px;
height:15px;
-webkit-transform: rotate(45deg);
transform: rotate(45deg);
}
<div id="demo7"></div>
blog comments powered by Disqus