首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >_:-(X)是如何为Edge和IE修复的?

_:-(X)是如何为Edge和IE修复的?
EN

Stack Overflow用户
提问于 2018-12-25 20:12:33
回答 1查看 2.4K关注 0票数 1

我遇到了一种情况,我只能在Edge和IE浏览器中应用特定的CSS样式。我在网上发现,您可以使用_:-ms(X)添加CSS选择器,这种样式只适用于IE和Edge。

但我想知道,这个修复方法到底是如何起作用的?据我所知,逗号只会分离不同的选择器,这意味着其他浏览器也应该解释和使用这种样式。

下面是一个示例:

假设我们只想在边缘和IE中将94 IE的宽度应用于.selector元素。

代码语言:javascript
运行
复制
_:-ms-lang(x), .selector { 
    width: 94px;
}

边缘浏览器将应用这种样式,而其他浏览器则不会。但为什么不呢?

选择器中的逗号应该将样式应用于_:-ms(X)元素和.selector元素。

这里是这个IE黑客的来源。

再来一个。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-12-28 07:13:55

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

下面是CSS3规范中概述这种行为的部分

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

在这里,CSS2.1讨论逗号的特例

CSS 2.1给出了选择器中逗号(,)的特殊含义。但是,由于不知道逗号在CSS的未来更新中是否具有其他含义,因此如果选择器中有错误,则应忽略整个语句,即使其他选择器在CSS 2.1中看起来可能是合理的。

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

这里还有一个很好的答案,说明为什么这种行为是可取的。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53925353

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档