: root, html, * селектор. Есть ли различия? - PullRequest
0 голосов
/ 14 марта 2020

Есть ли разница между этими тремя CSS правилами?

* {
  font-size: 24px
}
:root {
  font-size: 24px
}
html {
  font-size: 24px
}

Ответы [ 2 ]

3 голосов
/ 14 марта 2020

Да, есть разница. Ниже приведены несколько примеров, где результат не совпадает

Использование *

* {
  font-size: 24px
}

p {
  font-size:2em;
}
<div>
  <p>some text <span>here</span></p>
</div>

Использование html (или :root)

html {
  font-size: 24px
}

p {
  font-size:2em;
}
<div>
  <p>some text <span>here</span></p>
</div>

Применение font-size ко всем элементам отличается от применения font-size к элементу html, и все элементы наследуют значение.

В первом примере span будет иметь font-size, равный 24px, потому что он был выбран *. Во втором примере, span будет наследовать вычисленное значение p, так как ни один селектор не нацеливается на него.


между html и :root, есть война специфичности, где :root будет победитель:

html {
  font-size: 999px;
}

:root {
  font-size:24px;
}
<div>
  <p>some text <span>here</span></p>
</div>

:root {
  font-size:24px;
}

html {
  font-size: 999px;
}
<div>
  <p>some text <span>here</span></p>
</div>
1 голос
/ 14 марта 2020

Все они будут влиять на все ваше HTML. Вы даже можете использовать четвертый вариант, который будет html * { }, который будет работать на всех ваших HTML.

Их значение:

  • Значение * это выберет все элементы - согласно CSS * Селектор .
  • Псевдокласс :root CSS соответствует элементу root дерева, представляющего документ. В HTML,: root представляет элемент <html> и идентичен селектору html, за исключением того, что его специфичность выше.

Вы можете получить больше примеров и информации по этому сообщение от сообщества: Как применить глобальный шрифт ко всему HTML документу .

Надеюсь, это поможет!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...