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

Brave/Chrome浏览器中box-shadow不跟随border-radius的CSS问题求助

问题:box-shadow在Chrome/Brave中不跟随border-radius显示

我在编写CSS代码时遇到异常:使用box-shadow属性时,阴影本该跟随元素的border-radius呈现圆角,但在Brave和Chrome浏览器中完全失效,仅显示矩形阴影;而Firefox等浏览器中表现正常。相关代码如下:

<div id="a"><div id="b"></div></div>
<style>
  body {
    margin: 0;
    height: 100%;
    display: grid;
    place-items: center;
    background: #0B2429
  }
  #a {
    width: 200px;
    height: 200px;
    transform: rotate(45deg);
    border-radius: 50% 0 50%;
    background: #998235;
    display: grid;
    place-items: center;
  }
  #b {
    width: 50px;
    height: 50px;
    background: #0B2429;
    border-radius: 100%;
    box-shadow: 0 0 0 45px #F3AC3C, 0 0 0 65px #0B2429;
  }
</style>

原因分析

这是Chrome/Brave所使用的Blink内核的已知渲染Bug:当元素的父容器应用了transform: rotate()等变换属性时,子元素的box-shadow会忽略自身的border-radius设置,强制以矩形渲染。Firefox的Gecko内核不存在该渲染逻辑问题,因此能正常显示圆角阴影。

解决方案

有两种简单可行的修复方式:

方案1:给子元素添加反向旋转变换

让子元素#b与父容器的变换上下文对齐,给#b添加与父容器方向相反的旋转变换:

#b {
  /* 原有样式不变 */
  transform: rotate(-45deg);
}

修改后的完整代码:

<div id="a"><div id="b"></div></div>
<style>
  body {
    margin: 0;
    height: 100%;
    display: grid;
    place-items: center;
    background: #0B2429
  }
  #a {
    width: 200px;
    height: 200px;
    transform: rotate(45deg);
    border-radius: 50% 0 50%;
    background: #998235;
    display: grid;
    place-items: center;
  }
  #b {
    width: 50px;
    height: 50px;
    background: #0B2429;
    border-radius: 100%;
    box-shadow: 0 0 0 45px #F3AC3C, 0 0 0 65px #0B2429;
    transform: rotate(-45deg);
  }
</style>

方案2:转移旋转变换至body

将父容器的旋转变换移到body上,避免子元素处于变换上下文之中:

body {
  /* 原有样式不变 */
  transform: rotate(45deg);
}
#a {
  /* 移除原有transform: rotate(45deg); */
}

修改后的完整代码:

<div id="a"><div id="b"></div></div>
<style>
  body {
    margin: 0;
    height: 100%;
    display: grid;
    place-items: center;
    background: #0B2429;
    transform: rotate(45deg);
  }
  #a {
    width: 200px;
    height: 200px;
    border-radius: 50% 0 50%;
    background: #998235;
    display: grid;
    place-items: center;
  }
  #b {
    width: 50px;
    height: 50px;
    background: #0B2429;
    border-radius: 100%;
    box-shadow: 0 0 0 45px #F3AC3C, 0 0 0 65px #0B2429;
  }
</style>

内容的提问来源于stack exchange,提问作者Tanguy Macé

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 18:45:49