En las hojas de estilos complejas, es habitual que varias reglas CSS se apliquen a un mismo elemento HTML. El problema de estas reglas múltiples es que se pueden dar colisiones como la del siguiente ejemplo:
p { color: red; } p { color: blue; } <p>...</p>
¿De qué color se muestra el párrafo anterior? CSS tiene un mecanismo de resolución de colisiones muy complejo y que tiene en cuenta el tipo de hoja de estilo que se trate (de navegador, de usuario o de diseñador), la importancia de cada regla y lo específico que sea el selector.
El método seguido por CSS para resolver las colisiones de estilos se muestra a continuación:
!important
).Hasta que no se expliquen más adelante los conceptos de tipo de hoja de estilo y la prioridad, el mecanismo simplificado que se puede aplicar es el siguiente:
Como en el ejemplo anterior los dos selectores son idénticos, las dos reglas tienen la misma prioridad y prevalece la que se indicó en último lugar, por lo que el párrafo se muestra de color azul.
En el siguiente ejemplo, la regla CSS que prevalece se decide por lo específico que es cada selector:
p { color: red; } p#especial { color: green; } * { color: blue; } <p id="especial">...</p>
Al elemento <p>
se le aplican las tres declaraciones. Como su origen y su importancia es la misma, decide la especificidad del selector. El selector *
es el menos específico, ya que se refiere a "todos los elementos de la página". El selector p
es poco específico porque se refiere a "todos los párrafos de la página". Por último, el selector p#especial
sólo hace referencia a "el párrafo de la página cuyo atributo id
sea igual a especial". Como el selector p#especial
es el más específico, su declaración es la que se tiene en cuenta y por tanto el párrafo se muestra de color verde.
Ejercicio 2