Concepto de la Especificidad
Se trata de un concepto de jerarquía entre los estilos. CSS se trata de un lenguaje de cascada, es decir el navegador va aplicando los estilos según los va leyendo en orden de aparición descendente en el documento CSS.
Por Ejemplo:
Se aplica un estilo a un elemento HTML, pero posteriormente se define un segundo estilo que altera algunas propiedades de este elemento. CSS, como se trata de un lenguaje de cascada, aplicará los primeros estilos y posteriormente sobrescribirá las propiedades en conflicto al aplicar el segundo estilo; por lo tanto, siempre que los estilos cuenten con la misma jerarquía se aplicará el último estilo seleccionado.
Es aquí donde entra en juego la especificidad. Consiste en que según el selector que se aplique en el estilo este podrá tener mayor o menor jerarquía que otras clases, por lo tanto existe una escala jerárquica en la cual mientras más jerarquía posea un tipo de selector, mayor prioridad tendrán los estilos que lo utilicen.
Por lo tanto, pese a que se trata de un lenguaje de cascada, si se utiliza un selector de alta jerarquía como por ejemplo un "id" para definir un estilo, ninguno de sus atributos podrá ser modificado por un estilo que aplique un selector de menor jerarquía como por ejemplo una clase.
A continuación se muestra la tabla de jerarquías CSS
Como se puede ver las jerarquías están divididas en 5 grupos entre los cuales algunos de ellos están conformados por diversos selectores; en estos casos estos selectores tienen la misma prioridad en CSS.
Nota: los "estilos en línea" son aquellos estilos CSS definidos directamente dentro del documento HTML utilizando un atributo "style".
!Important
En la cima de esta tabla de selectores se encuentra un nuevo tipo de recurso, el "!important". Esta opción consiste en una propiedad especial de CSS la cual puede ser incluida dentro de un estilo sin importar qué tipo de selector use, de la siguiente manera:
Dentro de la jerarquía CSS nada tiene más nivel que el !important, por lo tanto lo que sea definido como tal no podrá ser cambiado por ningún otro estilo, razón por la cual no es muy recomendable su uso salvo en casos muy marcados, ya que un mal uso de este pudiese generar errores o conflictos al diseñar una página.