css - CSS all 属性在 iOS 上意外工作

标签 css safari

意外行为特别适用于 color 属性:(AFAIK)

看起来当一个元素有all:inherit(或all: unset)时,iOS 锁定该元素的颜色是继承的(或初始)值(value)不惜一切代价 - 违反级联规则。

给定以下非常简单的标记

<div>Hi there</div>

使用 CSS:

body {
  color: red;
  border: 5px solid red;
}
div {
  all: inherit;
  color: green; 
  border: 5px solid green;
}

Snippet demo:(用iPhone/iPad等iOS设备打开查看问题)

body {
  color: red;
  border: 5px solid red;
}
div {
  all: inherit;
  color: green;
  border: 5px solid green; 

}
<div>Hi there</div>

...我希望 div 的文本和边框的结果颜色为绿色(这实际上是 Chrome 和 firefox 上的结果)但是在 iOS(10.3 +)* 结果边框颜色为绿色,但文本颜色为红色!

一个更奇怪的 iOS 问题是,当一个元素具有 all:inherit(或未设置)时,似乎无法更改 descendant 元素的颜色!

片段演示:

body {
  color: red;
}
div {
  all: inherit;
}
.inner {
  color: green;
}
<div>Hi there <span><strong class="inner">inner element</strong></span></div>

...所以在上面的代码片段中,iOS 将内部元素着色为红色!

备注:caniuse表示 iOS safari 从 9.3 版开始支持 CSS all 属性,并且没有报告任何已知问题。

...那么:在 iOS 中是否有解决此问题的方法?

目前,由于这个问题,我看不到任何使用 all 属性的方法!


我测试了三款 iOS 设备:运行 iOS 10.3 的 iphone 6s、运行 iOS 11 的 iphone 7 和运行 iOS 11.1 的 iPad

最佳答案

根据这个答案 Why css "all: unset" works weirdly in Safari browser for MacOS?

Safari 似乎用 webkit-text-fill-color 覆盖了所有颜色属性。

所以使用 webkit-text-fill-color 自己来修复颜色是解决方法:)

关于css - CSS all 属性在 iOS 上意外工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47674419/

相关文章:

javascript - Safari:类型错误:代理的 'target' 应该是一个对象

javascript - 是否可以从 Safari 中 HLS 流中嵌入的 ID3 标签元数据获取信息?

css - 如何在 Safari 的 flexbox 容器中居中固定内容?

iframe - Ipad Safari - 如果在 iframe 内滚动则无法滚动页面

css - DNN 皮肤背景位置被忽略

html - 具有动态内容的静态页脚

google-chrome - Chrome 在使用 css transition rotate 时闪烁黑屏

javascript - 对于通过 JavaScript 隐藏/显示的输入,iOS 中的上一个/下一个按钮被禁用

php - 如何在 Wordpress 中创建图像滚动导航按钮

Jquery Masonry 高度问题