我遇到的情况是,我只能在Edge和IE浏览器中应用特定的CSS样式。我在网上发现,您可以在CSS选择器的前面加上_:-ms-lang(x),该样式仅适用于IE和Edge。
但是我想知道,此修复程序的工作原理是什么?据我所知,逗号只会分隔不同的选择器,这意味着其他浏览器也应解释并使用此样式。
这里是一个示例:
假设我们只希望在Edge和IE中将94px的宽度应用于.selector元素。
_:-ms-lang(x), .selector {
width: 94px;
}
Edge浏览器将应用此样式,而其他浏览器则不会。但是为什么不呢?
选择器中的逗号应将样式应用于_:-ms-lang(x)元素,并将样式应用于.selector元素。
答案 0 :(得分:1)
在CSS中,当浏览器无法识别选择器的一部分(或认为选择器中存在错误)时,它会完全忽略整个规则。
Here's the section in the CSS3 spec outlining this behavior
合格规则的前奏被解析为选择器列表。如果这导致选择器列表无效,则整个样式规则均无效。
Here CSS2.1 talks about the special case of comma
CSS 2.1为选择器中的逗号(,)赋予特殊含义。但是,由于不知道逗号是否会在将来的CSS更新中获取其他含义,因此即使选择器的其余部分在CSS 2.1中看起来很合理,如果选择器中的任何地方出现错误,也应忽略整个语句。
因此,当其他浏览器尝试解析选择器时,它们发现{
duration: "One",
startTime1: 60,
endtime1: 600
}
选择器无效,因此忽略了 整个 规则(包括{{ 1}})
Also here is an excellent answer on why this behavior is desirable