CSS псевдоэлемент ::selection
Используйте псевдоэлемент CSS ::selection для выделения и стилизации части документа. Узнайте о псевдоэлементе и изучите примеры.
Псевдоэлемент ::selection нацелен на часть документа, которую пользователь выделил — например, кликом и перетаскиванием мыши по тексту или нажатием Ctrl/Cmd + A. Он позволяет переопределить стандартный вид выделения браузера, чтобы выделенный текст соответствовал вашему бренду или улучшал контрастность.
По умолчанию браузер отображает выделенный текст с цветом подсветки операционной системы (обычно синий фон с белым текстом). Стилизация ::selection заменяет это поведение по умолчанию для целевых элементов.
В этой главе рассматривается синтаксис, допустимые свойства, особенности вендорных префиксов и практические примеры для текста, нескольких цветов и полей форм.
Зачем и когда использовать
Пользовательский стиль выделения — это небольшая деталь, которая придаёт сайту отполированный вид:
- Фирменный стиль — согласуйте подсветку с вашим акцентным цветом вместо синего цвета ОС.
- Читаемость — на тёмном или низкоконтрастном фоне стандартная подсветка может затруднить чтение текста; вы можете выбрать сочетание с гарантированным контрастом.
- Области применения — применяйте разные цвета выделения для разных разделов (например, блоки кода против основного текста).
Следите за читаемостью выделенного текста: всегда задавайте color и background-color вместе, чтобы не получить, например, белый текст на почти белой подсветке.
Допустимые свойства
::selection игнорирует большинство CSS. Только небольшой фиксированный набор свойств CSS можно использовать для его стилизации:
- color
- background-color
- text-shadow
- cursor
- caret-color
- outline и его сокращения
- text-decoration и связанные с ним свойства
text-emphasis-color
Такие свойства, как font-size, font-family, margin или transform, не влияют на выделенный текст — выделение является лишь графической подсветкой, а не реальным блоком, который можно перемещать или изменять.
В Firefox исторически использовалась форма с вендорным префиксом: ::-moz-selection. Для поддержки старых версий Firefox объявляйте правило с префиксом перед стандартным правилом ::selection, как это сделано в примерах ниже.
Этот псевдоэлемент был введён в CSS Selectors Level 3, затем удалён и теперь входит в спецификацию CSS Pseudo-Elements Level 4.
Стандарт и версия
Синтаксис
CSS псевдоэлемент ::selection
::selection {
css declarations;
}Пример псевдоэлемента ::selection:
Пример кода CSS ::selection
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
::-moz-selection {
color: #eee;
background: #8ebf42;
}
::selection {
color: #eee;
background: #8ebf42;
}
</style>
</head>
<body>
<h2>::selection selector example</h2>
<p>
Lorem Ipsum is simply dummy text of the printing and typesetting industry. Lorem Ipsum has been the industry's standard dummy text ever since the 1500s, when an unknown printer took a galley of type and scrambled it to make a type specimen book.
</p>
</body>
</html>Пример псевдоэлемента ::selection с разными цветами:
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
.green::-moz-selection {
background-color: #8ebf42;
}
.green::selection {
background-color: #8ebf42;
}
.yellow::-moz-selection {
background-color: #FFFF19;
}
.yellow::selection {
background-color: #FFFF19;
}
</style>
</head>
<body>
<h2>::selection selector example</h2>
<p>This is a text with the default selection background-color.</p>
<p class="green">Select this text to see a green background.</p>
<p class="yellow">Select this text to see a yellow background.</p>
</body>
</html>Пример псевдоэлемента ::selection с тегами <textarea> и <input>:
CSS ::selection, ещё один пример кода
<!DOCTYPE html>
<html>
<head>
<title>Title of the document</title>
<style>
input::-moz-selection {
color: #1c87c9;
background-color: #eee;
}
input::selection {
color: #1c87c9;
background-color: #eee;
}
textarea::-moz-selection {
color: white;
background-color: #8ebf42;
}
textarea::selection {
color: white;
background-color: #8ebf42;
}
</style>
</head>
<body>
<h2>::selection selector example</h2>
<p>Input element</p>
<form>
<input type="text" value="Select this input text" />
<p>Textarea element</p>
<textarea rows="5" cols="25">Select this textarea text</textarea>
</form>
</body>
</html>Важные моменты
- Наследование не работает как у обычных свойств. Правило
::selectionприменяется к тому элементу, на который оно нацелено; это не значение, которое каскадируется на выделенные дочерние элементы, как это делаетcolor. Чтобы стилизовать выделение по всему сайту, пишите правило на широком селекторе, например::selection(соответствует всему) илиbody ::selection. - Фон должен быть достаточно непрозрачным, чтобы быть видимым.
background-colorс очень низким значением альфа-канала может быть трудно заметить на существующем фоне. - Ограничено списком допустимых свойств. Если объявление, кажется, не имеет эффекта, проверьте допустимый список выше — вероятно, оно игнорируется.
Чтобы глубже изучить отдельные свойства, которые можно использовать здесь, смотрите color, background-color и text-shadow.