O que é especificidade de seletores CSS e como funciona?
O navegador determina quais estilos exibir em um elemento dependendo da especificidade das regras CSS. Assumimos que o navegador já determinou as regras que correspondem a um elemento específico. Entre as regras correspondentes, a especificidade, quatro valores separados por vírgula, a, b, c, d
são calculados para cada regra com base no seguinte:
a
é se estilos inline estão sendo usados. Se a declaração de propriedade for um estilo inline no elemento,a
é 1, caso contrário, 0.b
é o número de seletores de ID.c
é o número de classes, atributos e seletores de pseudo-classes.d
é o número de tags e seletores de pseudo-elementos.
A especificidade resultante não é uma pontuação, mas uma matriz de valores que podem ser comparados coluna por coluna. Ao comparar seletores para determinar qual tem a maior especificidade, olhe da esquerda para a direita e compare o maior valor em cada coluna. Assim, um valor na coluna b
substituirá os valores nas colunas c
e d
, não importa quais sejam. Como tal, a especificidade de 0,1,0,0
seria maior do que a de 0,0,10,10
.
Nos casos de especificidade igual: a regra mais recente é a que conta. Se você escreveu a mesma regra em sua folha de estilo (independentemente de interna ou externa) duas vezes, então a regra inferior em sua folha de estilo está mais próxima do elemento a ser estilizado, ela é considerada mais específica e, portanto, será aplicada.
Eu escreveria regras CSS com baixa especificidade para que pudessem ser facilmente substituídas, se necessário. Ao escrever código de biblioteca de componentes de UI CSS, é importante que eles tenham baixas especificidades para que os usuários da biblioteca possam substituí-los sem usar regras CSS muito complicadas apenas para aumentar a especificidade ou recorrer a !important
.