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

通过生成堆叠上下文,可以轻松解决此问题,包括使用isolation: isolate、设置position和z-index以及transform技巧。

Safari border-radius问题,iOS浏览器CSS问题

在使用 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
bugs.webkit.org/show_bug.cgi?id=140535

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

解决方法:

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

方法 1

设置 isolation: isolate

.parent {
    isolation: isolate;
}

方法 2

设置 position 和 z-index

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

方法 3

设置 transform

.parent {
    transform: translateZ(0);
}

从本质上来说,“生成堆叠上下文”的意思来说,最直接的可能是方法 A) 中的 isolation: isolate。如果没有其他特殊原因,可能最好选择 【方法1】。文章来源地址https://www.toymoban.com/diary/web/757.html

到此这篇关于解决Safari以及iOS上的其他浏览器子元素不受border-radius作用的问题的文章就介绍到这了,更多相关内容可以在右上角搜索或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

原文地址:https://www.toymoban.com/diary/web/757.html

如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请联系站长进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用
数据库表设计技巧:数据库建表与字段类型选择的原则
上一篇 2024年04月08日 13:31
0.1+0.2不等于0.3的真相 - 计算机浮点数运算的秘密
下一篇 2024年04月09日 17:43

相关文章

  • 苹果ios iphone safari浏览器javascript中alert和confirm不生效解决办法

     在iOS Safari中,可能会遇到JavaScript Alert弹窗不起作用的问题。这是由于iOS Safari默认会阻止弹出窗口,包括JavaScript Alert弹窗。解决此问题的方法如下: 1.使用其他弹窗方式替代JavaScript Alert弹窗,例如使用自定义弹窗组件或者使用JavaScript模拟弹窗。 2.如果必须使用JavaScript Al

    2024年02月14日
    浏览(22)
  • 如果在 Mac 上的 Safari 浏览器中无法打开网站

    使用网络管理员提供的信息更改代理设置。个人建议DNS解析,设置多个例如114.114.114.114   8.8.8.8   8.8.4.4 如果打不开网站,请尝试这些建议。 在 Mac 上的 Safari 浏览器 App   中,检查页面无法打开时出现的信息。 这可能会建议解决问题的方法或包括解决问题时需要的信息。

    2024年02月07日
    浏览(25)
  • 让iOS Safari浏览器支持油猴脚本

    Userscripts 是一款免费 iOS Safari 浏览器插件,可以兼容油猴脚本,但如果油猴脚本代码没有对手机进行适配的话可能不会生效。  1、 首先 打开设置 找到  Safari 浏览器  选择  扩展  然后 勾选  Userscripts  所有网站中 选择  允许     然后打开 Userscripts 后按照下图所示,在

    2024年02月13日
    浏览(26)
  • 苹果IOS安装IPA, plist形式 Safari 浏览器点击安装

    苹果开发者账号链接 网址: https://developer.apple.com/account 苹果应用上架链接 网址: https://appstoreconnect.apple.com/ 应用证书文件及打包 参考教程: 最新uniapp打包IOS详细步骤(2022) 证书在线制作工具 网址: https://app.121xuexi.com/ iPhone直接安装IPA 可以使用 爱思助手 - 应用游戏 - 导入安装

    2024年02月08日
    浏览(26)
  • JS一些常用判断(包括判断是否是苹果(ios)/安卓(Android)、是否是Safari浏览器、检测浏览器语言等等)

    提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 提示:这里可以添加本文要记录的大概内容: 参考链接 JS判断客户端是否是iOS或者Android:http://caibaojian.com/browser-ios-or-android.html

    2024年02月04日
    浏览(29)
  • 使用viewport-fit=cover来解决关于ios在Safari浏览器内容被地址栏、菜单栏或工具栏遮挡导致的兼容问题

    首先,本文将会详细说明一下如何使用viewport-fit和css的env函数,如果你了解并熟悉这些东西,请直接跳到第三步【解决ios内容被Safari遮挡的两种情况】 最后会详细说明页面body第一层的div设置100vh和100%高度来解决关于ios在Safari浏览器内容被地址栏、菜单栏或工具栏遮挡导致的

    2024年02月09日
    浏览(25)
  • 让苹果iOS的手机iPhone和电脑Safari浏览器支持油猴脚本

    官方的AppStore是没有油猴插件(Tampermonkey)的,官方插件不仅少,功能被阉割,相对弱小,还收费。嗯,这很苹果第三方拓展。 这是油猴插件(Tampermonkey)的下载地址,上面是老版本,下面是新版本。 https://safari.tampermonkey.net/tampermonkey.safariextz https://www.tampermonkey.net/?browser=s

    2024年02月07日
    浏览(29)
  • MAC的Safari浏览器没有声音解决办法

    有一段时间没打开电脑,也不知道是系统自动更新或是什么缘故,所有浏览器都无法正常发声。 现象如下: 首先,Safari浏览器无法自动播放声音,下载的360浏览器现象一致,但是播放其他音乐播放软件和视频软件都正常。最离谱的是,先播放一下其他软件的音频,Safari浏览

    2024年04月25日
    浏览(2)
  • ios全屏模式下避免跳转到safari浏览器,在苹果safari上实现全屏效果(让web页面以独立app的形式运行)

    你可能不知道的一个功能:web 单页面应用可以在手机端以类似独立 app 的形式运行。 就像下面这样, 没有上下的工具栏 切换的时候跟普通 app 没什么不同 苹果官方对 safari可用 meta 标签的说明 Safari HTML Reference - Supported Meta Tags 只需要添加下面一行即可 添加meta标签,打开谷歌

    2024年02月09日
    浏览(24)
  • 苹果IOS在Safari浏览器中将网页添加到主屏幕做伪Web App,自定义图标,启动动画,自定义名称,全屏应用

    在ios中我们可以使用Safari浏览自带的将网页添加到主屏幕上,让我们的web页面看起来像一个本地应用程序一样,通过桌面APP图标一打开,直接全屏展示,就像在APP中效果一样,完全体会不到你是在浏览器中。 通过点击桌面上的图标,直接打开全屏页面:(这图标是我用CSDN的图标

    2024年02月06日
    浏览(22)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包