border-radius四值写法按顺时针顺序控制左上、右上、右下、左下角,如气泡框左对齐用8px 24px 24px 8px,右对齐用24px 8px 8px 24px,单位可混用但建议统一为px。
不规则气泡框的核心,就是让四个角的圆角半径各不相同——比如左上和左下用小圆角(模拟贴边),右上和右下用大圆角(容纳对话三角),这靠 border-radius 的四值简写就能实现。顺序固定:左上、右上、右下、左下,顺时针一圈。
常见错误是记反顺序,或误以为“右上/右下”对应的是“内容右侧”,其实它只跟元素自身盒模型有关,和气泡朝向无关。
border-radius: 8px 24px 24px 8px 是典型气泡左对齐写法:左侧收窄(8px),右侧撑开(24px),视觉上像从左边“冒出来”border-radius: 24px 8px 8px 24px,右侧收窄,左侧撑开border-radius: 6px 1.2rem 50% 0,但百分比会按宽高分别计算,容易失真,建议统一用 px
斜杠语法(如 border-radius: 12px / 6px)用于定义椭圆角:前值是水平半径,后值是垂直半径。但在气泡框中几乎不用,原因很实际:
很多教程把 border-radius 和伪元素三角(::after)一起用,结果发现三角根部被裁掉、或圆角在三角连接处断开——这不是 bug,是盒模型叠加的必然结果。
立即学习“前端免费学习笔记(深入)”;
关键在于:三角是绝对定位盖在气泡主体上的,而 border-radius 只作用于气泡本体。所以必须手动协调:
border 实现(比如 border-top: 8px solid #fff),那气泡主体的 padding-right 至少留出 12px,给三角腾出空间border-radius,三角单独包一层 div 并设 border-top-left-radius: 4px 做微调,避免强耦合当气泡内容是 <img>,且你希望图片本身也带圆角(比如头像气泡),直接在 img 上加 border-radius 不够——因为图片可能超出容器,被父级 overflow: hidden 切掉。
真正起效的组合是:
overflow: hidden 和 border-radius(比如 border-radius: 12px 20px 20px 12px)img 不设 border-radius,但设 display: block; width: 100%; height: auto;,确保它完全填满又不失比例box-shadow 必须加在父容器上,不能加在 img 上,否则圆角阴影会失效这个细节很多人忽略:圆角生效位置取决于 overflow: hidden 落在哪一层,而不是谁写了 border-radius。