Fork me on GitHub

纯CSS 实心三角形 + 实心矩形 气泡对话框

我们先说一下这个实心三角形 + 实心矩形气泡对话框的实现的思路:

①设置矩形,填充背景色 ;

②添加伪元素before,绘制三角形箭头 ;

③调整三角形箭头与矩形的位置,使两者结合在一起


一、绘制矩形对话框

在绘制如上图这样一个带实心三角形的气泡对话框之前,我们先绘制一个矩形,并将这个矩形背景填充上颜色,使它成为一个实心的矩形。

代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>CSS 带等边三角形的气泡对话框</title>
<style>
.one {
width: 200px;
height: 100px;
line-height: 100px; /*文字垂直居中*/
margin: 0 auto;
text-align: center; /*文字水平居中*/
border-radius: 10px; /*设置矩形四个角为圆角*/
background-color: #A7A7DB;
}
</style>
</head>
<body>
<div class="one">三角形在底部的对话框</div>
</body>
</html>


二、绘制三角形箭头

然后我们绘制该气泡对话框的箭头三角形

如何绘制三角形详情可以点击此处查看

①我们给矩形添加一个伪元素,在这个伪元素中绘制三角形;

②由于此次我们绘制的三角形箭头在矩形框底部,所以我们保留的是矩形顶部的边

CSS代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
/* 添加伪元素,在这里添加三角形 */
.one:before {
/*伪元素必须添加content*/
content: "";
width: 0;
height: 0;
/*IE6下,height:0;不顶用,可使用font-size:0; + overflow:hidden;修复此问题*/
font-size:0;
overflow:hidden;
display: block;
border-width: 15px;
border-color: #A7A7DB transparent transparent transparent;
/*为了兼容IE6,所有设置为透明(transparent)的边,需要设置为dashed;有颜色的边设置为solid*/
border-style: solid dashed dashed dashed;
}


三、调整三角形箭头的位置

我们通过CSS定位(position)来移动三角形箭头位置,将三角形移到矩形框的底部。可以运用子绝父相的原理来进行定位。

①在三角形的父元素中添加相对定位;

②在伪元素中添加绝对定位

CSS代码如下:

1
2
3
4
5
6
7
8
9
.one {
position: relative; /*子绝父相*/
}

.one:before {
position: absolute; /*绝对定位不占位置*/
top: 100px; /* 向下移动 矩形的高度 + 矩形的上下内边距 + 下边框粗细*/
left: 20%; /*相对于矩形宽度的位置*/
}


四、修改颜色

最后,我们只需要将三角形箭头的颜色修改为矩形框的背景色就可以啦~

下面附上完整代码:

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
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>纯CSS 实心三角形 + 实心矩形 气泡对话框</title>
<style>
/* 1.实心矩形 */
.one {
width: 200px;
height: 100px;
line-height: 100px;
margin: 0 auto;
text-align: center;
border-radius: 10px;
background-color: #A7A7DB;
position: relative; /*子绝父相*/
}

/* 2.添加伪元素,在这里添加三角形 */
.one:before {
/*伪元素必须添加content*/
content: "";
width: 0;
height: 0;
/*IE6下,height:0;不顶用,可使用font-size:0; + overflow:hidden;修复此问题*/
font-size:0;
overflow:hidden;
display: block;
border-width: 15px;
border-color: #A7A7DB transparent transparent transparent;
/*为了兼容IE6,所有设置为透明(transparent)的边,需要设置为dashed;有颜色的边设置为solid*/
border-style: solid dashed dashed dashed;
position: absolute; /*绝对定位不占位置*/
top: 100px; /* 向下移动 矩形的高度 + 矩形的上下内边距 + 下边框粗细*/
left: 20%; /*相对于矩形宽度的位置*/
}
</head>
<body>
<div class="one">三角形在底部的对话框</div>
</body>
</html>

------------- The End -------------

本文标题:纯CSS 实心三角形 + 实心矩形 气泡对话框

文章作者:White

发布时间:2018年09月09日 - 14:09

最后更新:2018年11月01日 - 10:11

原始链接:http://yoursite.com/2018/09/09/dialog1/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。