纯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/ 

 

  • 0
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值