Поиск по сайту:

Как использовать селектор псевдокласса CSS :root


Узнайте о селекторе псевдокласса CSS :root и о том, как вы можете использовать его в своих проектах!

Селектор псевдокласса CSS :root используется для выбора родителя самого высокого уровня данной спецификации. В спецификации HTML :root по существу эквивалентен селектору html.

В приведенном ниже фрагменте CSS стили :root и html будут делать то же самое:

:root {
  background-color: gray;
}

html {
  background-color: gray;
}

Если вы заметили, я сказал, что :root по существу эквивалентен селектору html. Фактически, селектор :root имеет больше полномочий, чем html. Это потому, что на самом деле он считается селектором псевдокласса (например, :first-child или :hover).

Как селектор псевдокласса, он имеет больший авторитет/более высокую специфичность, чем селекторы тегов:

:root {
  background-color: blue;
  color: white;
}

html {
  background-color: red;
  color: white;
}

Несмотря на то, что селектор html следует за ним, селектор :root по-прежнему выигрывает благодаря его более высокой специфичности!

Перекрестная спецификация

В спецификации HTML псевдокласс :root нацелен на родителя самого высокого уровня: html.

Поскольку CSS также предназначен для XML, вы можете использовать :root, и он будет просто соответствовать другому элементу.

Например, в SVG родительским элементом самого высокого уровня является тег svg.

:root {
  fill: gold;
}

svg {
  fill: gold;
}

Как и в HTML, теги :root и svg выбирают один и тот же элемент, однако селектор :root будет иметь более высокую специфичность.

Практическое использование

Каково практическое применение :root? Как мы уже говорили ранее, это безопасная замена селектору html.

Это означает, что вы можете делать все, что обычно делаете с селектором html:

:root {
  margin: 0;
  padding: 0;
  color: #0000FF;
  font-family: "Helvetica", "Arial", sans-serif;
  line-height: 1.5;
}

Если хотите, вы можете реорганизовать этот код, чтобы использовать пользовательские свойства CSS для создания переменных на глобальном уровне!

:root {
  margin: 0;
  padding: 0;
  --primary-color: #0000FF;
  --body-fonts: "Helvetica", "Arial", sans-serif;
  --line-height: 1.5;
}

p {
  color: var(--primary-color);
  font-family: var(--body-fonts);
  line-height: var(--line-height);
}

Дополнительным преимуществом использования :root вместо html является то, что вы можете стилизовать SVG-графику! 🤯

:root {
  margin: 0;
  padding: 0;
  --primary-color: #0000FF;
  --body-fonts: "Helvetica", "Arial", sans-serif;
  --line-height: 1.5;
}

svg {
  font-family: var(--body-fonts);
}

svg circle {
  fill: var(--primary-color);
}

Подробную документацию по селектору псевдокласса :root можно найти в сети разработчиков Mozilla.