元素选择器如何比id选择器更具体?

Sha*_*lor 5 css css-selectors css-specificity

据我所知,元素是最不具体的.(元素vs id).请帮助我一般了解选择者的特异性.

<div id="container">
    <div id="firstDiv">FIRST Div inside CONTAINER</div>
    <div id="secondDiv">SECOND Div inside CONTAINER</div>
</div>
Run Code Online (Sandbox Code Playgroud)
body{
    width: 780px;
    margin: 20px auto;
}
#container > div:not(:last-of-type){
    margin-bottom: 0px; /*How its more specific than ID selector below? */
}
#container {
    border: 15px solid orange;
    padding: 10px;
}
#firstDiv{
    margin: 50px; /*This is not taking effect*/
    border: 5px solid blueviolet;
}
#secondDiv{
    border: 5px solid brown;    
}
Run Code Online (Sandbox Code Playgroud)

http://jsfiddle.net/t2RRq/

Mat*_*ens 13

要了解CSS特异性,请阅读特异性战争.还有一个方便的参考表:

因此,选择器就像#foo具有1,0,0特异性一样,而元素选择器则p具有0,0,1特异性.在这两个中,ID选择器将"赢" 100大于1.

还可以在此处找到更具体(heh)版本,其中还包括伪元素和伪类:http://www.standardista.com/css3/css-specificity/

  • @Shawn:看看最后一张图片,它说:*`*`,+,>,〜:通用选择器没有值,组合器不会增加特异性.*我还假设你已经看过了规范到现在,并明确定义如何计算特异性,所以不,它不计算. (3认同)
  • 我到底怎么*没*看到这个?!这太棒了。 (2认同)