css 怎么做一个简单的聊天气泡?

作者站长头像
站长
· 阅读数 5

css 怎么做一个简单的聊天气泡?

左边这块绿色的气泡,那个三角形应该怎么实现?如果实现了,怎么改变三角形的位置,例如放气泡上面,下面,左边或右边?


<!DOCTYPE html>
<html>
    <head>
        <meta charset="utf-8">
        <title></title>
    </head>
    <body>
        <style>
            .p {
                padding: 5rem;
            }

            .box {
                display: inline-block;
                background-color: #57e412;
                padding: 10px 20px;
                border-radius: 10px;
            }
        </style>

        <div class="p">
            <div class="box">这是一段测试文字</div>
        </div>
    </body>
</html>
回复
1个回答
avatar
test
2024-06-19

就是提前预设好4个位置咯,然后按照各种选择器去匹配就好了,比如说我用 属性选择器 的一个实现(默认就是居右)。answer image

<div>这里是文字内容</div>
<div position="left">这里是文字内容</div>
<div position="top">这里是文字内容</div>
<div position="bottom">这里是文字内容</div>
<div position="right">这里是文字内容</div>
div {
  min-width: 100px;
  min-height: 30px;
  line-height: 30px;
  background: #93ec69;
  padding: 0 10px;
  border-radius: 4px;
  margin: 10px;
  display: inline-block;
  position: relative;
}
div:before {
  content: '';
  width: 8px;
  height: 8px;
  background: #93ec69;
  display: block;
  position: absolute;
  right: 0;
  top: 50%;
  transform: translate(50%, -50%) rotate(45deg);
}
div[position="top"]:before {
  top: 0;
  left: 50%;
  transform: translate(-50%, -50%) rotate(45deg);
}
div[position="bottom"]:before {
  top: 100%;
  left: 50%;
  transform: translate(-50%, -50%) rotate(45deg);
}
div[position="right"]:before {
  right: 0;
  top: 50%;
  transform: translate(50%, -50%) rotate(45deg);
}
div[position="left"]:before {
  top: 50%;
  left: 0;
  transform: translate(-50%, -50%) rotate(45deg);
}
回复
likes
适合作为回答的
  • 经过验证的有效解决办法
  • 自己的经验指引,对解决问题有帮助
  • 遵循 Markdown 语法排版,代码语义正确
不该作为回答的
  • 询问内容细节或回复楼层
  • 与题目无关的内容
  • “赞”“顶”“同问”“看手册”“解决了没”等毫无意义的内容