跳到主内容
UniKit

CSS 气泡对话框生成器

用 CSS 三角生成对话框气泡:方向、宽高、圆角、边框宽度与颜色、背景色、三角大小与偏移都能调,实时预览并输出含 ::before/::after 的完整 CSS 与 HTML 片段。

浏览器本地运行所有计算都在你的浏览器里完成,数据不会离开本机。

三角方向
240px
72px
12px
2px
阴影(drop-shadow)用 filter 的 drop-shadow,阴影会贴着气泡 + 三角的轮廓
12px
120px

三角中心到气泡左(上)边的距离,会自动夹到气泡范围内

预设

实时预览

这是一段气泡文字,用来演示对话框效果。

CSS

.bubble {
  position: relative;
  box-sizing: border-box;
  width: 240px;
  min-height: 72px;
  padding: 12px 16px;
  background: #FFFFFF;
  border: 2px solid #D6D9DE;
  border-radius: 12px;
}

.bubble::before,
.bubble::after {
  content: "";
  position: absolute;
  width: 0;
  height: 0;
  border-style: solid;
  pointer-events: none;
}

.bubble::before {
  position: absolute;
  width: 0;
  height: 0;
  border-style: solid;
  pointer-events: none;
  top: 100%;
  left: 118px;
  margin-left: -14.8px;
  border-width: 14.8px 14.8px 0 14.8px;
  border-color: #D6D9DE transparent transparent transparent;
}

.bubble::after {
  position: absolute;
  width: 0;
  height: 0;
  border-style: solid;
  pointer-events: none;
  top: 100%;
  left: 118px;
  margin-left: -12px;
  border-width: 12px 12px 0 12px;
  border-color: #FFFFFF transparent transparent transparent;
}

HTML

<div class="bubble">这是一段气泡文字,用来演示对话框效果。</div>

这个工具能做什么

  • 做 tooltip、聊天气泡或标签提示时不用手写 border 三角:调方向和尺寸,右侧直接给出可以粘贴的 CSS 与 HTML。
  • 气泡带边框最容易翻车的地方(三角处的边框开口)已经在 ::before / ::after 两层三角里处理好了,改颜色和圆角也不会露馅。
  • 三角位置随时可调:偏移量会被自动夹在气泡范围内,贴着左边缘或居中都不会出现三角悬空。
  • 需要阴影时用 filter 的 drop-shadow,阴影会贴着「气泡 + 三角」的轮廓,而不是只在矩形盒子上投一条直角阴影。

示例

输入

默认圆角气泡预设:方向向下,宽度 240px,最小高度 72px,圆角 12px,边框 2px #D6D9DE,背景 #FFFFFF,三角高度 12px,偏移 120px

输出

.bubble 声明 position: relative、width: 240px、border: 2px solid #D6D9DE、border-radius: 12px;.bubble::before 用 14.8px 的 border-width 画边框色三角,top: 100%、left: 118px、margin-left: -14.8px;.bubble::after 用 12px 画背景色三角,left: 118px、margin-left: -12px

外层三角比内层大 2px × √2 ≈ 2.8px,正好让斜边间距等于边框宽度 2px,所以三角处的边框看起来是连续开口的。

常见问题

为什么要用 ::before 和 ::after 两层三角?

单层三角只能做出纯色气泡。有边框时需要一个边框色的三角垫在下面、一个背景色的三角盖在上面,才能让边框沿三角轮廓绕一圈。两层三角的偏移量差了一个 borderWidth,内层正好盖住外层中间那部分。

三角偏移填得很大或很小会怎样?

会被自动夹到 [H, span - H] 范围内(H 是外层三角的半宽,span 是宽度或最小高度),这样三角永远不会超出气泡边缘;如果气泡太窄导致范围为空,就直接居中。填负数会提示偏移不合法。

为什么阴影要用 drop-shadow 而不是 box-shadow?

box-shadow 只认元素的矩形盒子,三角部分(伪元素)不会带上阴影,看起来像悬浮的直角影子。drop-shadow 作用于整个渲染后的轮廓,包括伪元素三角,所以阴影能跟着气泡形状走。

颜色和尺寸写得不对会怎样?

颜色只接受 3 / 4 / 6 / 8 位十六进制(如 #fff、#FFFFFF、#FF000080),写颜色名或 rgb() 会报「颜色不合法」。尺寸类数值超出范围会被夹到允许区间(宽度 40–800、圆角 0–200、边框 0–20、三角 2–80),而不是直接报错。

输出的 HTML 片段能直接改吗?

可以,它就是 <div class="bubble">文字</div>,里面的文字会被转义(& < > " 变成实体),所以粘进去不会破坏结构。换成自己的 class 名时记得同步改 CSS 里的选择器。

关键词:cssbubbletooltipspeech bubblearrowtriangle气泡对话框提示框三角气泡生成器

同类工具