纯CSS 实心三角形 + 实心矩形 气泡对话框
纯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> |
转自https://timor419.github.io/2018/09/09/dialog1/