Css lang女士(x)如何修复Edge和IE?

Css lang女士(x)如何修复Edge和IE?,css,internet-explorer,microsoft-edge,Css,Internet Explorer,Microsoft Edge,我曾经遇到过这样一种情况:我只能在Edge和IE浏览器中应用特定的CSS样式。我在网上发现,你可以在CSS选择器前面加上:-ms lang(x),这种样式将只应用于IE和Edge 但我想知道,这个修复程序到底是如何工作的?据我所知,逗号将分隔不同的选择器,这意味着其他浏览器也应该解释和使用这种样式 以下是一个例子: 假设我们只想在Edge和IE中对.selector元素应用94px的宽度 _:-ms-lang(x), .selector { width: 94px; } 边缘浏览器将

我曾经遇到过这样一种情况:我只能在Edge和IE浏览器中应用特定的CSS样式。我在网上发现,你可以在CSS选择器前面加上:-ms lang(x),这种样式将只应用于IE和Edge

但我想知道,这个修复程序到底是如何工作的?据我所知,逗号将分隔不同的选择器,这意味着其他浏览器也应该解释和使用这种样式

以下是一个例子:

假设我们只想在Edge和IE中对.selector元素应用94px的宽度

_:-ms-lang(x), .selector { 
    width: 94px;
}
边缘浏览器将应用此样式,而其他浏览器不会。但为什么不呢

选择器中的逗号应将样式应用于:-ms lang(x)元素和.selector元素


在CSS中,当浏览器无法识别选择器的一部分(或认为选择器中存在错误)时,它会完全忽略整个规则

限定规则的前奏被解析为选择器列表。如果这导致选择器列表无效,则整个样式规则无效

CSS 2.1赋予选择器中的逗号(,)特殊含义。但是,由于不知道逗号是否会在未来的CSS更新中获得其他含义,因此如果选择器中的任何地方出现错误,则应忽略整个语句,即使选择器的其余部分在CSS 2.1中看起来合理

因此,当其他浏览器试图解析选择器时,它们发现
.-ms lang(x)
选择器无效,因此忽略整个规则(包括
.selector


如果浏览器不知道其中一个选择器,那么即使使用逗号(黑客攻击的目的)也会忽略所有选择器。我不知道这是如何工作的,但它读起来是CSS黑客攻击;至于您的评论“但我想知道,这个修复程序到底是如何工作的?据我所知,逗号只会分隔不同的选择器,这意味着其他浏览器也应该解释并使用这种样式。”-不,出乎意料的是(对我来说),如果浏览器不理解选择器(这使得它无效)它必须丢弃整个选择器,包括逗号分隔的选择器:“一组包含无效选择器的选择器是无效的”()。嘿,伙计们,你们为什么不把它作为一个答案,因为这是OP想要知道的。我想知道的是,这在IE中是如何工作的,它是一个有效的选择器,不适用于任何东西吗?