Правілы спецыфічнасці ў CSS

У папярэднім прыкладзе абодва селектары былі аднолькавымі і мелі аднолькавы прыярытэт. Гэта значыць, што перамагала ўласцівасць, якая была напісана ніжэй.

Бываюць таксама сітуацыі, калі аднаму элементу старонкі адпавядаюць некалькі селектараў. У гэтым выпадку пры канфлікце ўласцівасцей пераможа больш спецыфічны, гэта значыць больш дакладны селектар. Давайце разгледзім правілы спецыфічнасці.

Правіла першае

Клас заўсёды перамагае селектар тэга:

html<p class="text">text</p>
cssp {
  color: red;
}
.text {
  color: green; /* прымяніцца гэты колер */
}

Результат:

Правіла другое

Ідэнтыфікатар заўсёды перамагае клас:

html<p id="elem" class="text">text</p>
css.text {
  color: red;
}
#elem {
  color: green; /* прымяніцца гэты колер */
}

Результат:

Правіла трэцяе

Пры роўных умовах перамагае той селектар, у якога больш частак. Напрыклад, калі у нас два селектары тэгаў, то пераможа той, у якога тэгаў больш:

html<div>
  <p>text</p>
</div>
cssp {
  color: red;
}
div p {
  color: green; /* прымяніцца гэты колер */
}

Результат:

Калі два селектары класаў, то пераможа той, у якім указана больш класаў (калі там будуць селектары тэгаў, то яны не ўплываюць):

html<div class="block">
  <p class="text">text</p>
</div>
css.text {
  color: red;
}
.block .text {
  color: green; /* прымяніцца гэты колер */
}

Результат: