边框圆角失效最常见的原因是父容器 overflow: hidden 裁剪或 background 未设 background-clip: padding-box 导致遮挡;需优先排查这两项,再检查边框、transform 和 display 等细节。
边框圆角(border-radius)失效,最常见的原因不是写错了属性,而是被其他 CSS 规则“盖住”或“裁掉”了。重点排查两个地方:父容器的 overflow: hidden 和元素自身的 background(尤其是带渐变、图片或伪元素时)。
如果圆角元素的直接父容器有 overflow: hidden,而子元素的圆角区域超出了父容器的内容盒(content box),那圆角就会被硬生生裁掉——看起来就像没生效。
overflow: hidden,看圆角是否恢复;如果恢复,说明问题在此padding 或缩小子元素尺寸,确保圆角区域在父容器边界内overflow: hidden(比如做图片裁剪),就把 border-radius 改到父容器上,让裁剪和圆角同步发生纯色背景通常没问题,但以下情况会让圆角“看不见”:
background-clip: padding-box:
默认是 border-box,背景会铺满边框区域,把圆角边缘撑平或模糊掉background-clip: content-box 或 text:背景只画在内容区,边框和圆角区域完全透明,显得像没圆角::before)覆盖了主元素且自身没设圆角:视觉上看到的是伪元素的直角边框解决方法:显式加上 background-clip: padding-box,确保背景止于内边距边缘,不干扰边框圆角渲染。
这些细节也容易导致圆角“消失”:
border:border-radius 本身不依赖边框存在,但若同时用了 outline,它不支持圆角,会盖住真实圆角transform: scale() 或 zoom:某些浏览器下缩放会重置或破坏圆角渲染(尤其旧版 Safari/IE)span)且未设 display: inline-block 或 block:inline 元素对 border-radius 支持有限,行为不稳定基本上就这些。优先盯住 overflow 和 background-clip,90% 的“圆角失效”都能当场定位。不复杂但容易忽略。