【发布时间】:2018-05-20 08:12:25
【问题描述】:
意外行为特别适用于 color 属性:(AFAIK)
当一个元素具有all:inherit(或all: unset)时,iOS 不惜一切代价将该元素的颜色锁定为其继承(或初始)值 - 违反级联规则。
鉴于以下非常简单的标记
<div>Hi there</div>
使用 CSS:
body {
color: red;
border: 5px solid red;
}
div {
all: inherit;
color: green;
border: 5px solid green;
}
片段演示:(用 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>
...所以在上面的 sn-p iOS 中将内部元素涂成红色!
注意:caniuse 表示 iOS Safari 从 9.3 版开始支持 CSS all 属性,并且不报告任何已知问题。
...所以:iOS 中有解决方法吗?
目前,由于这个问题,我看不到任何使用 all 属性的方法!
我测试了三款 iOS 设备:运行 iOS 10.3 的 iphone 6s、运行 iOS 11 的 iphone 7 和运行 iOS 11.1 的 iPad
【问题讨论】:
-
这会影响 macOS 和 iOS 上的 Safari。
-
有趣的是,如果你从边框声明中删除颜色(所以它说边框:5px 实心),Safari 将绿色应用于边框没有问题。
-
@BoltClock - 所以有一分钟我想我可以以某种方式使用
currentColor作为一种解决方法......but no success