Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/css/34.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 为什么ID选择器利用类选择器?_Css_Css Specificity - Fatal编程技术网

Css 为什么ID选择器利用类选择器?

Css 为什么ID选择器利用类选择器?,css,css-specificity,Css,Css Specificity,给定一个具有类和ID的元素;如果我对元素应用带有类选择器的CSS,并使用带有ID选择器的CSS覆盖它,则会应用后者 <a class='abc' id='def' href="#"></a> <style> .abc{ color:red; } #def{ color:blue; } </style> .美国广播公司{ 颜色:红色; } #def{ 颜色:蓝色; } 为什么ID选择器利用类选择器 如果我给班级以同样的

给定一个具有类和ID的元素;如果我对元素应用带有类选择器的CSS,并使用带有ID选择器的CSS覆盖它,则会应用后者

 <a class='abc' id='def' href="#"></a>
 <style>
 .abc{
   color:red;
 }
 #def{
   color:blue;
 }
 </style>

.美国广播公司{
颜色:红色;
}
#def{
颜色:蓝色;
}
为什么ID选择器利用类选择器

如果我给班级以同样的风格,给Id以同样的风格,为什么会这样 ID样式

这与jQuery无关,而与jQuery有关

特定性是浏览器决定哪些属性值与元素最相关并应用的手段

换句话说,某些选择器的优先级高于其他选择器,按此顺序排列

  • 内联样式
  • ID选择器
  • 类选择器、伪类、属性选择器
  • 通用选择器
  • 请注意,将样式应用于ID将比将样式应用于类更具体,因此将覆盖其他样式,而内联样式将覆盖外部样式表中设置的样式


    如果特定性相同,则样式的顺序将决定使用什么样式,后者将应用于前者等等。

    OP的代码根本不包含任何jQuery/javascript,因此解释这个问题的一种方法是仅使用CSS

    但是为了用jQuery/javascript回答这个问题,您必须考虑跨浏览器兼容性

    在jQuery中使用ID选择器基本上可以转换为普通的javascript
    document.getElementByID
    ,这是非常通用的

    但是,在jQuery中使用CSS类选择器可以理想地转换为普通的javascript
    文档

    但实际上,它所做的可能比你想象的要多

    例如,如果您签出,您可以看到IE8不完全支持getElementsbyClassName()

    jQuery在这里的工作是使这些浏览器差异透明化


    简而言之,选择器越复杂,jQuery处理跨浏览器差异的可能性就越大。

    ID只返回一个元素,因此在找到ID后搜索停止。多个元素可以有相同的类,所以搜索会一直持续到DOM的末尾。你真正想问的问题与jQuery没有任何关系,只是CSS的特殊性。但是我有一个类和一个id。谢谢你的回答,我还有一个疑问,为什么它会采用id的颜色?这里有两个完全无关的问题。请决定您要问的是哪一个。下面是idea的一个小例子:。伪类不比属性优先于类。他们都有相同的优先权。@Alohci:你要为此责备MDN贡献者。我想知道有多少读者被那篇文章误导了,什么时候会有人介入并修复它。(我说这话时完全意识到……)