Pravla specificity v CSS

V předchozím příkladu byly oba selektory stejné a měly stejnou prioritu. To znamená, že vyhrála ta vlastnost, která byla napsána níže.

Existují také situace, kdy jednomu prvku stránky odpovídá několik selektorů. V tomto případě při konfliktu vlastností vyhraje specifičtější, tedy přesnější selektor. Pojďme se podívat na pravidla specificity.

Pravidlo první

Třída vždy porazí selektor tagu:

html<p class="text">text</p>
cssp {
  color: red;
}
.text {
  color: green; /* použije se tato barva */
}

Результат:

Pravidlo druhé

Identifikátor vždy porazí třídu:

html<p id="elem" class="text">text</p>
css.text {
  color: red;
}
#elem {
  color: green; /* použije se tato barva */
}

Результат:

Pravidlo třetí

Při stejných podmínkách vyhraje ten selektor, který má více částí. Například, pokud máme dva selektory tagů, vyhraje ten, který má více tagů:

html<div>
  <p>text</p>
</div>
cssp {
  color: red;
}
div p {
  color: green; /* použije se tato barva */
}

Результат:

Pokud jsou dva selektory tříd, vyhraje ten, ve kterém je uvedeno více tříd (pokud tam jsou selektory tagů, tak ty neovlivňují):

html<div class="block">
  <p class="text">text</p>
</div>
css.text {
  color: red;
}
.block .text {
  color: green; /* použije se tato barva */
}

Результат: