Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
当浏览器没有';不支持CSS伪类?_Css_Css Selectors_Cross Browser_Pseudo Class - Fatal编程技术网

当浏览器没有';不支持CSS伪类?

当浏览器没有';不支持CSS伪类?,css,css-selectors,cross-browser,pseudo-class,Css,Css Selectors,Cross Browser,Pseudo Class,如果浏览器不支持CSS伪类(如:dir),会发生什么情况 例如: html:dir(rtl) { color: red; } 如果浏览器不理解:dir伪类,他们会忽略这个规则吗?我更感兴趣的是一般情况,然后是这个特殊的伪类。我的直觉告诉我是的,但我还没有找到证实我直觉的文件 此问题与此问题不同:。更窄的是,我要问的是,当浏览器看到一个它无法识别的伪类时,它会做什么,而不是它通常会对无效的CSS选择器做什么。例如,据我所知,未识别的伪类可能仍然被视为有效的选择器。浏览器目前不区分未识别

如果浏览器不支持CSS伪类(如
:dir
),会发生什么情况

例如:

html:dir(rtl) {
    color: red;
}
如果浏览器不理解
:dir
伪类,他们会忽略这个规则吗?我更感兴趣的是一般情况,然后是这个特殊的伪类。我的直觉告诉我是的,但我还没有找到证实我直觉的文件



此问题与此问题不同:。更窄的是,我要问的是,当浏览器看到一个它无法识别的伪类时,它会做什么,而不是它通常会对无效的CSS选择器做什么。例如,据我所知,未识别的伪类可能仍然被视为有效的选择器。

浏览器目前不区分未识别或不支持的选择器和无效选择器。如果浏览器识别选择器,通常它会尽其所能实现它(任何不符合规范的行为都可以在其错误跟踪器上归类为错误),即使它没有在同一级别的选择器中实现所有其他功能(如当前的
:dir()
例如,历史上,Internet Explorer 7和8带有级别3属性选择器,Internet Explorer 6带有通用选择器)。如果它不识别选择器,它会按照字母顺序删除整个规则集,不会提出任何问题。注意它说

当用户代理无法解析选择器(即,它不是有效的CSS 2.1)时,它必须忽略选择器和以下声明块(如果有)

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

事实上,选择器本身并不区分具有与有效伪类不对应的标识或函数的伪类标记和一系列甚至不能作为伪类解析的字符,它们都同样无效,请参见和。本质上,这意味着当前浏览器行为完全符合标准,而不仅仅是浏览器供应商同意的任意决定

我没有听说过任何浏览器会将伪类识别为用于错误处理的有效类,并继续忽略该伪类或整个复杂选择器(使选择器列表中的其他复杂选择器不受影响)。WebKit曾经有一个非常坏的习惯,就是接受带有无法识别的伪元素的CSS规则,允许像
::selection,::-moz selection
,这样的事情。然而,我相信WebKit不再这样做了,但是你知道WebKit是如何处理这些事情的。但是它从来没有用伪类来实现这一点

在标准方面,选择器-4似乎设置为随着静态和动态配置文件的引入而改变这一点。在CSSWG电视会议上发表讲话;您可以找到分钟数(搜索“快速配置文件中没有选择器的行为”)。但是,已解决的问题是,不在动态(以前快速)配置文件中的选择器应视为无效,并像往常一样删除整个CSS规则。见:

符合选择器级别4的CSS实现必须使用动态配置文件进行CSS选择。使用动态概要文件的实现必须将概要文件中未包含的选择器视为未知和无效


由于CSS解析和支持的不同,每个浏览器会有所不同。这就是说,这似乎是很容易测试的东西。Chrome和Firefox都支持direction属性,但只有Firefox(49+)支持:dir伪类。创建两个div元素并为每个元素指定不同的方向,然后使用:dir(rtl)伪类创建一个类,并将其指定给这两个元素。在Firefox和Chrome中打开,观察结果。(在撰写本文时,Firefox 48和Chrome 52是最新版本。)