You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何设置第二层box-shadow使其拥有与第一层相同的border-radius

解决多层box-shadow不继承border-radius的问题

你遇到的问题是第二层box-shadow因使用负扩展半径(-30px),导致阴影圆角无法匹配父元素的border-radius:20px,出现直角情况。

修复方案:用伪元素拆分多层阴影

通过两个伪元素分别实现每层阴影,让每个阴影层都继承父元素的圆角属性:

body {
  font-family: sans-serif;
  border: solid 1px;
  padding: 10px;
  border-radius: 20px;
  position: relative; /* 为伪元素提供定位基准 */
}

body::before,
body::after {
  content: "";
  position: absolute;
  inset: 0; /* 等价于top/left/right/bottom:0 */
  border-radius: inherit; /* 继承父元素圆角 */
  z-index: -1; /* 将阴影置于元素下方,避免遮挡内容 */
}

body::before {
  box-shadow: rgb(195, 197, 199) 0px 23px 0px -15px;
}

body::after {
  box-shadow: rgb(217, 217, 213) 0px 45px 0px -30px;
}

原理说明

  • 原生多层box-shadow中,负扩展半径会让阴影的形状计算脱离元素圆角约束,拆分后的伪元素可单独为每层阴影设置完整的圆角继承
  • inset:0让伪元素完全覆盖父元素范围,保证阴影位置与原效果一致
  • 每个伪元素对应一层阴影,各自遵循圆角规则,完美匹配父元素的圆角效果

内容的提问来源于stack exchange,提问作者YEL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 13:08:23