Como sabemos um documento HTML pode conter definições CSS inline, embebidas e externas. Ora quando coexistem num mesmo documento poderá haver conflitos o que pode originar situações anómalas e renders estranhos do documento HTML.
A ordem de leitura destes estilos, quando em simultâneo num HTML, é a seguinte:
Quando existe mais do que um estilo num documento HTML, estes funcionam em cascata numa folha de estilo virtual com a ordem acima descrita.
A última regra da cascata é a que tem prioridade.
A ordem de prioridade é a seguinte:
Isto quer dizer que em caso de regras iguais com valores diferentes a inline sobrepõe-se à embebida e esta à externa.
É importante saber que mesmo quando existem duas declarações iguais na mesma css, a última regra da lista das declarações é a que prevalece. É, também, importante a posição das folhas de estilo na head do HTML, a ultima folha CSS na ordem do HTML é a que tem predominância.
<div id=”exemplo”>
<p> Viva o <em>Porto!</em></p>
</div>
#exemplo{
font-family:Arial;
{
p{
font-size:1em; color:red;
}
em{color:blue; font-style:normal}
Neste exemplo teremos: Viva o (arial, 1 em, vermelho) Porto! (arial, 1 em, azul)
Relembrando, o render final é dado pela ordem das CSS, que podem ser externas, embebidas e inline. Em caso de conflito, o mesmo estilo para as mesmas tags, a última css aplicada sobrepõe-se à anterior.
| Inline | ID | Classe | Elemento | Especificidade | |
| <p style ...> | 1 | 0 | 0 | 0 | 1000 |
| h1, h2 | 0 | 0 | 0 | 2 | 2 |
| h1.primeiro | 0 | 0 | 1 | 1 | 11 |
| #contentor | 0 | 1 | 0 | 0 | 100 |
| #contentor h2 | 0 | 1 | 0 | 1 | 101 |
| #contentor #lateral p | 0 | 2 | 0 | 1 | 201 |
| h1 p | 0 | 0 | 0 | 2 | 2 |
| .imagem | 0 | 0 | 1 | 0 | 10 |
Quando a cascata ou a ordem de inerência não conseguem resolver um conflito de render é usada a especificidade. A cada selector é atribuído um peso. O número mais alto é usado para o render final.