Селекторы типа (например, body
) и селекторы псевдоэлементов (например, ::selection
) действительно имеют одинаковую специфичность , но специфичность вступает в действие только тогда, когда два селектора выбирают одинаковыеelement .
Селектор body
не выделяет выделенный текст или какой-либо текст вообще - он выбирает элемент <body>
.Это элемент, а не его текст, который имеет цвет фона.
Принимая во внимание, что ::selection
выбирает воображаемый элемент, который окружает текущий выбранный текст на странице.Таким образом, нет конфликта между стилями, установленными на body
и ::selected
, потому что селекторы выбирают разные вещи.
Пример
Представьте, что у вас есть следующий HTML:
<body>
I am some body text.
<p>I am some text in a paragraph.</p>
</body>
И следующий CSS:
p {
background-color: red;
}
body {
background-color: white;
}
Оба селектора имеют одинаковую специфичность, но фон <p>
будет по-прежнему красным, поскольку это не элемент <body>
.
То же самое верно, если вы замените p
на ::selection
- фон выделенного текста будет красным, потому что текст в элементе <body>
не является элементом <body>
.
Итак, в принципе, чтоВы сказали здесь:
body
не соответствует выбранному основному тексту, за исключением случаев, когда псевдоэлемент ::selection
указан как часть селектора