导航

萌即是正义!时不时分享一些ACG活动记录与有趣代码的小站!

侧边栏
最新评论
广树管理员
2026-06-05 12:27
@Zrzzz:板凳
Zrzzz
2026-06-05 12:26
第一!
广树管理员
2026-06-05 08:26
@Zrzzz:活了活了,现在让AI整理了。
Zrzzz
2026-06-05 00:18
我半夜发现了什么 我不是在做梦吧 活动页面复活了?!
广树管理员
2026-06-04 21:30
@ZeroCounter:试下把md转json,然后让deepseek v4 pro的api,不用思考模式的情况下,指定输出json。
攻略中
传颂之物:循白之证
暂无评分
PS5传颂之物:循白之证
2026年5月31日 19时 ~ 攻略中
已累计游玩6天
《传颂之物:循白之证》是 AQUAPLUS 开发、Shiravune 发行的《传颂之物》系列动作 RPG。故事发生在大国“大和”恢复和平之后:奥修特尔、御雷、宗近、修娘等人击退敌国阿瓦什兰的侵略,本应迎来安宁,但各地却陆续出现看似毫无关联的怪异现象,并逐渐指向同一个源头;随着三条线索彼此重叠,众人再次踏上旅程,而旅途尽...
告别回忆 双想 ~Not always true~
暂无评分
Steam告别回忆 双想 ~Not always true~
2026年3月10日 22时 ~ 攻略中
已累计游玩2个月28天
“我觅见了生命中的唯一,而后——”
亚路塔:狐狸狐途的面包冒险
暂无评分
Steam亚路塔:狐狸狐途的面包冒险
2026年2月12日 19时 ~ 攻略中
已累计游玩3个月24天
一场席卷全世界的面包革命现在开始! 主人公查雅阴错阳差之下,开始了在荒废的岛屿上经营面包店的生活。 出外冒险搜集食材、研发崭新面包配方、遇见性格各异的伙伴们,建造更丰富的设施,用面包香气使无人问津的广场再次热闹起来!
ToHeart
暂无评分
SteamToHeart
2025年6月26日 19时 ~ 攻略中
已累计游玩11个月15天
AQUAPLUS推出的“温暖人心的校园恋爱游戏”将以高清全3D形式焕新归来!
fault - StP - LIGHTKRAVTE
暂无评分
Steamfault - StP - LIGHTKRAVTE
2025年5月29日 20时 ~ 攻略中
已累计游玩1年
全球累计销量超过50万份的“fault”系列最新作!故事的舞台是一个融合了奇幻与科幻的超前世界——卢森海德王国。本作讲述了生活在此地的一个平凡又平庸的究极普通市民——名为果子的少年的故事。
PSN奖杯卡

PSN奖杯卡

归档
赞助商广告

解决Safari以及iOS上的其他浏览器子元素不受border-radius作用的问题

2024-01-16 18:00:00
CSS/HTML

在使用 Safari 浏览器查看 HTML 时,即使在父元素中设置了 overflow: hidden 和 border-radius,子元素仍然可能超出 border-radius 的范围而显示的问题。

问题:

尽管在父元素中设置了 overflow: hidden 和 border-radius 以应用圆角样式于子元素,但在桌面版 Safari 或 iOS 上的 Chrome 等浏览器中,子元素仍然可能在 border-radius 的范围之外显示。

例如,通过以下方式将 <img> 放在 <div> 中,设置 overflow: hidden 和 border-radius 就能复现这个现象。

HTML:

<div class="parent">
  <img src="avatar.jpg" width="100" height="100" />
</div>

CSS:

.parent {
  overflow: hidden;
  border-radius: 50%;
}

当然,如果直接在要应用样式的元素上设置 border-radius,则会按预期显示(理所当然)。因此,问题只在设置了 overflow: hidden 和 border-radius 的父元素时才会出现。

我在以下浏览器版本中能够复现这个现象:

  • macOS Safari: 15.4 (17613.1.17.1.13)
  • iOS Chrome: 100.0.4896.85
  • iOS Brave: 1.37 (22.4.6.8)

原因:

直接进入结论,似乎 Safari(准确说是 WebKit)的一个 bug(?)是问题的原因。在 WebKit Bugzilla 的 Bug 140535 中称其为“仅在非堆叠上下文中发生”。

140535 – Border-radius clip of non-stacking composited descendant doesn't work

为了验证这一点,如果添加生成堆叠上下文的 CSS 属性,问题将得到解决。


解决方法:

因为问题似乎仅在非堆叠上下文中发生,所以可以通过有意地生成堆叠上下文来避免。具体而言,有以下几种方法可以在不影响外观的情况下生成堆叠上下文:

方法 A) 设置 isolation: isolate

.parent {
  isolation: isolate;
}

方法 B) 设置 position 和 z-index

.parent {
  position: relative;
  z-index: 0;
}

方法 C) 设置 transform

.parent {
  transform: translateZ(0);
}

从本质上来说,“生成堆叠上下文”的意思来说,最直接的可能是方法 A) 中的 isolation: isolate。如果没有其他特殊原因,可能最好选择 A)。有关生成堆叠上下文的其他方法,如果感兴趣,可以查阅 MDN 页面:

The stacking context - CSS: Cascading Style Sheets | MDN

翻译自:《Safari や iOS 上のブラウザで border-radius で子要素をマスクできない問題》

donate.png


telegram banner (1).png