如何实现WhatsApp风格的聊天气泡尖角样式?
WhatsApp风格聊天气泡(带尖角+圆角)实现方案
之前尝试用clip-path实现聊天气泡的尖角,但会丢失border-radius属性,下面是可以同时保留圆角和尖角的实现方案,基于CSS mask属性完成:
完整代码实现
CSS 代码
.bubble { --r: 25px; /* 圆角半径 */ --t: 30px; /* 尖角的大小 */ max-width: 300px; padding: calc(2*var(--r)/3); /* 组合多个渐变实现气泡形状 */ -webkit-mask: /* 绘制尖角部分 */ radial-gradient(var(--t) at var(--_d) 0,#0000 98%,#000 102%) var(--_d) 100%/calc(100% - var(--r)) var(--t) no-repeat, /* 实现左上角/右上角的圆角 */ conic-gradient(at var(--r) var(--r),#000 75%,#0000 0) calc(var(--r)/-2) calc(var(--r)/-2) padding-box, /* 实现右下角/左下角的圆角 */ radial-gradient(50% 50%,#000 98%,#0000 101%) 0 0/var(--r) var(--r) space padding-box; background: #1384C5; color: #fff; } /* 左侧气泡(尖角在左上角) */ .left { --_d: 0%; border-left: var(--t) solid transparent; margin-right: var(--t); place-self: start; } /* 右侧气泡(尖角在右上角) */ .right { --_d: 100%; border-right: var(--t) solid transparent; margin-left: var(--t); place-self: end; } body { margin: 0; min-height: 100vh; display: grid; place-content: center; gap: 20px; font-family: system-ui, sans-serif; font-size: 20px; }
HTML 代码
<div class="bubble left">Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt </div> <div class="bubble right">Ok, Thank you</div> <div class="bubble left"> ut labore et dolore magna </div> <div class="bubble right">Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt </div>
关键原理说明
- mask属性的优势:和
clip-path不同,mask通过渐变的透明度控制元素可见区域,可同时实现圆角的柔和过渡和尖角形状,二者不会冲突 - 变量控制方向:通过
--_d变量切换尖角位置(左侧0%/右侧100%),只需给气泡添加.left或.right类即可切换样式 - 空间预留:用透明边框和margin给尖角留出空间,避免气泡内容被遮挡
- 可定制性:修改
--r调整圆角大小,修改--t调整尖角尺寸,适配不同设计需求
你之前尝试的clip-path方案失效原因:clip-path是基于多边形路径直接裁剪元素,border-radius是元素自身圆角属性,二者无法同时生效;而mask通过图层叠加实现形状,能完美兼容圆角视觉效果(本方案中mask已实现圆角,无需额外设置border-radius)
内容的提问来源于stack exchange,提问作者The Old County
相关产品推荐
相关产品推荐

