Псевдоэлементы CSS
Псевдоклассы меняют вид, когда меняется состояние (:hover, :focus). Псевдоэлементы идут дальше: можно стилизовать часть текста или сделать маленькую коробку до или после реального содержимого — с двойным двоеточием (::) и без лишних тегов в HTML.
Что значит псевдоэлемент?
Псевдоэлемент — слово, которое крепится к селектору через ::. Он целится в то, чего нет как полного элемента в разметке: первая буква, первая строка или сгенерированная коробка до/после содержимого. Для ::before и ::after обычно нужен content, чтобы что-то появилось.
Четыре частых псевдоэлемента
Начните с этих. Старая форма с одним двоеточием (:before) ещё часто работает — всё равно пишите современную с двумя.
📊 Повседневные псевдоэлементы CSS
| Псевдоэлемент | Что стилизует | Пример |
|---|---|---|
::before |
Коробку перед содержимым элемента | p::before |
::after |
Коробку после содержимого элемента | a::after |
::first-letter |
Первую букву текстового блока | p::first-letter |
::first-line |
Первую строку текстового блока | p::first-line |
Перед содержимым — ::before и content
::before создаёт виртуальную коробку перед настоящим текстом. Почти всегда ставьте content — строку или "" для пустой декоративной коробки.
До — открывающая кавычка
css.quote::before {
content: "“";
color: #0f766e;
font-size: 1.5rem;
margin-right: 0.25rem;
}
Не забудьте content
Без content многие правила ::before/::after ничего не показывают. Для цветной полоски или фоновой иконки хватает content: "".
После содержимого — ::after
::after — та же идея после содержимого: единица, бейдж или маленький суффикс.
После — подсказка внешней ссылки
cssa.external::after {
content: " ↗";
font-size: 0.85em;
}
Не прячьте нужный смысл здесь
Скринридеры и некоторые инструменты по-разному относятся к сгенерированному содержимому. Не кладите важные инструкции только в ::before/::after; настоящий текст оставьте в HTML.
Первая буква — ::first-letter
::first-letter стилизует первую букву текстового блока — классическая крупная буква в начале абзаца.
Первая буква — крупный начальный символ
css.lead::first-letter {
font-size: 2.5rem;
font-weight: 700;
color: #0f766e;
float: left;
line-height: 1;
margin-right: 0.15em;
}
Первая строка — ::first-line
::first-line стилизует только первую видимую строку — не «первое предложение», а строку, которую браузер собрал при переносе.
Первая строка — чуть жирнее
css.lead::first-line {
font-weight: 600;
color: #334155;
}
Пустая декоративная коробка
Иногда нужна только цветная полоска без текста. Достаточно content: "".
Пустой before — декоративная полоска
css.card::before {
content: "";
display: block;
height: 4px;
background: #0f766e;
margin-bottom: 0.75rem;
}
Хорошие привычки
- Псевдоэлемент = двойное двоеточие (
::before); псевдокласс = одно (:hover) - Ставьте
contentна::before/::after, если что-то должно быть видно - Нужный текст держите в HTML, не только в сгенерированном содержимом
::first-letterи::first-lineработают на текстовых блоках- Предпочитайте современное
::, даже если старое:beforeещё работает
Попробуйте сами
- Короткая страница с абзацем
.quote, абзацем.lead, ссылкойa.externalи.cardс текстом. - Добавьте
.quote::before { content: "“"; color: #0f766e; }и проверьте кавычку. - На ссылке с class
external:a.external::after { content: " ↗"; }. - Увеличьте
.lead::first-letterбирюзовым; стилизуйте.lead::first-lineсfont-weight: 600. - Добавьте
.card::before { content: ""; display: block; height: 4px; background: #0f766e; }для верхней полоски.
Частые ошибки
- Писать
:before, когда нужен состояние вроде:hover— состояние одно двоеточие; сгенерированная коробка два - Забыть
content, и ничего не появится - Класть единственную копию предупреждения только в
::after - Ждать чуда от
::first-letterна пустом или только-картиночном элементе - Путать
::first-lineс «первым предложением» — перенос браузера решает
Кратко
- Псевдоэлементы с
::стилизуют часть или сгенерированную коробку ::before/::afterнуженcontent(строка или"")::first-letterи::first-lineберут начало текстового блока- Критический смысл остаётся в HTML
- Одно двоеточие = псевдокласс; два = псевдоэлемент
- Практикуйтесь с кавычкой, суффиксом ссылки и абзацем lead
🧠 Проверьте Свои Знания
Проверьте Свои Знания
Бросьте себе вызов с помощью этой интерактивной викторины и узнайте, насколько хорошо вы понимаете тему
📝 Инструкции
- Внимательно прочитайте каждый вопрос
- Выберите лучший ответ на каждый вопрос
- Вы можете пересдавать тест столько раз, сколько захотите
- Ваш прогресс будет показан вверху