Investigando la especificidad me topé con este blog: http://www.htmldog.com/guides/cssadvanced/specificity/
Establece que la especificidad es un sistema de puntuación para CSS. Nos dice que los elementos valen 1 punto, las clases valen 10 puntos y las ID valen 100 puntos. También va en la parte superior decir que estos puntos se suman y la cantidad total es la especificidad de ese selector.
Por ejemplo:
body = 1 punto
body .wrapper = 11 puntos
body .wrapper #container = 111 puntos
Entonces, usando estos puntos, espero que los siguientes CSS y HTML den como resultado que el texto sea azul:
#a {
color: red;
}
.a .b .c .d .e .f .g .h .i .j .k .l .m .n .o {
color: blue;
}
<div class="a">
<div class="b">
<div class="c">
<div class="d">
<div class="e">
<div class="f">
<div class="g">
<div class="h">
<div class="i">
<div class="j">
<div class="k">
<div class="l">
<div class="m">
<div class="n">
<div class="o" id="a">
This should be blue.
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
¿Por qué el texto es rojo cuando 15 clases equivalen a 150 puntos en comparación con 1 ID que equivale a 100 puntos?
Aparentemente, los puntos no solo se suman; Están concatenados. Lea más sobre eso aquí: http://www.stuffandnonsense.co.uk/archives/css_specificity_wars.html
¿Eso significa que las clases en nuestro selector = 0,0,15,0
OR 0,1,5,0
?
(mis instintos me dicen que es el primero, como sabemos miradas especificidad del selector ID como esto: 0,1,0,0
)