gpt4 book ai didi

css - 当浏览器不支持 CSS 伪类时会发生什么?

转载 作者:行者123 更新时间:2023-11-28 10:34:56 26 4
gpt4 key购买 nike

如果浏览器不支持 CSS 伪类(如 :dir)会怎样?

例如:

html:dir(rtl) {
color: red;
}

如果浏览器不理解 :dir 伪类,它们会忽略这条规则吗?我对一般情况比对这个特定的伪类更感兴趣。我的直觉告诉我是的,但我还没有找到证实我的直觉的文档。


这个问题与这个问题不同:Invalid CSS selector causes rule to be dropped: What is the rationale? .它更窄,我问的是浏览器在看到它无法识别的伪类时会做什么,而不是一般情况下它对无效的 CSS 选择器会做什么。例如,据我所知,无法识别的伪类仍可能被视为有效的选择器。

最佳答案

浏览器目前不区分无法识别不支持 选择器,以及无效 选择器。如果浏览器识别选择器,通常它会尽其所能实现它(并且任何不规范的行为都可以在其错误跟踪器上归类为错误),即使它没有实现所有其他功能在同一级别的选择器中(例如当前 :dir() 的情况,以及历史上具有 3 级属性选择器的 Internet Explorer 7 和 8,以及具有通用选择器的 Internet Explorer 6)。如果它不能识别选择器,它会跟随 CSS2.1 §4.1.7 到字母并丢弃整个规则集,不问任何问题。注意它说

When a user agent cannot parse the selector (i.e., it is not valid CSS 2.1), it must ignore the selector and the following declaration block (if any) as well.

这意味着如果用户代理无法解析选择器,则它必须是无效的 CSS2.1(或在其他级别的选择器中无效);反之,如果它可以解析一个选择器,那么它一定是有效的。但这假设用户代理完全符合标准;我们都知道,在现实中,不同的实现对每个标准的符合程度不同,某些实现甚至有自己的特定于供应商的选择器,这些选择器不属于任何标准。所以我将其视为没有括号的“当用户代理无法解析选择器时”,我想浏览器供应商也会这样做。

事实上,Selectors 本身并没有区分具有不对应于有效伪类的标识或函数的伪类标记,以及一系列甚至不能被解析为伪类的字符——它们同样无效——参见 section 12 of css3-selectorssection 3.9 of selectors-4 。从本质上讲,这意味着当前的浏览器行为完全符合标准,而不仅仅是浏览器供应商同意的任意决定。

我还没有听说过任何浏览器会为了错误处理的目的而将伪类识别为有效,并继续忽略该伪类或整个复杂选择器(将其他复杂选择器留在选择器中-列表不受影响)。 WebKit 过去确实有一个非常坏的习惯,即接受带有无法识别的伪元素 的 CSS 规则,允许诸如 ::selection,::-moz-selection 之类的东西,其中 proved useless anyway because every other layout engine followed the spec more strictly 。不过,我相信 WebKit 不再这样做了,但是您知道 WebKit 是如何处理这些事情的。但是据我所知,它从来没有用伪做到过。

在标准方面,selectors-4 似乎准备通过引入静态和动态配置文件来改变这一点。 My email on the subject 在 CSSWG 电信中得到解决;您可以找到分钟 here(搜索“不在快速配置文件中的选择器的行为”)。但是,已解决的是,不在动态(以前快速)配置文件中的选择器应被视为无效,并像往常一样导致整个 CSS 规则被删除。见 section 2.1 :

CSS implementations conformant to Selectors Level 4 must use the dynamic profile for CSS selection. Implementations using the dynamic profile must treat selectors that are not included in the profile as unknown and invalid.

关于css - 当浏览器不支持 CSS 伪类时会发生什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38856208/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com