Используйте body :: selection, я хочу настроить цвет подсветки - PullRequest
4 голосов
/ 28 января 2012

Почему нельзя использовать body::selection, когда я хочу, чтобы все, что можно выделить, было нужным мне цветом, что угодно, включая p img li h1

Примеры здесь Теперь я хочу, чтобы все выделение было КРАСНЫМ цветом, но я использую body::selection, он никогда не работает

http://jsfiddle.net/kent93/nu6ju/

Ответы [ 2 ]

12 голосов
/ 28 января 2012

Если вы хотите применить фон выделения ко всем элементам, опустите селектор типа:

::selection {
    background: red;
}

И добавьте ::-moz-selection, чтобы он работал и в Firefox:

::-moz-selection {
    background: red;
}
::selection {
    background: red;
}

Никогда не было решено, как именно стили, заданные для E::selection для любого элемента E, должны распространяться на потомков E. В списке рассылки в стиле www содержится более подробное обсуждение . Именно по этой причине ::selection полностью исключен из CSS3 с последней версией LC CSS3 UI; см. этот раздел , в котором говорится:

Псевдоэлемент :: selection был удален, так как он был удален из селекторов после того, как тестирование обнаружило проблемы взаимодействия и дополнительную информацию для изучения / определения.

Мне кажется, что браузеры (по крайней мере, Firefox) просто не применяют одно и то же правило к дочерним элементам. Таким образом, если вы примените псевдоэлемент к body, то только текст body будет иметь пользовательский фон выбора; все вложенное в него не будет иметь фона выделения.

0 голосов
/ 28 января 2012

Если вы хотите остановить каскадирование, вы можете добавить

body *::selection { background: inherit; }

Таким образом, только текст на верхнем уровне будет выделен красным. Пример: http://jsfiddle.net/nu6ju/4/

...