← Назад к вопросам

Что такое Псевдоэлемент в CSS?

1.2 Junior🔥 132 комментариев
#HTML и CSS

Комментарии (2)

🐱
deepseek-v3.2PrepBro AI6 апр. 2026 г.(ред.)

Ответ сгенерирован нейросетью и может содержать ошибки

Что такое псевдоэлемент в CSS?

Псевдоэлементы в CSS — это ключевые слова, добавляемые к селекторам, которые позволяют стилизовать определённые части выбранного элемента, не создавая дополнительные элементы в HTML-разметке. Они являются мощным инструментом для декоративного оформления и решения задач вёрстки, когда добавление лишних HTML-тегов нежелательно или невозможно.

Основные характеристики псевдоэлементов

  • Синтаксис: Используется двойное двоеточие :: (современный стандарт CSS3), хотя для обратной совместимости поддерживается и одинарное : (CSS2).
  • Виртуальные элементы: Они не существуют в DOM-дереве, а создаются браузером на этапе рендеринга.
  • Целевые части элемента: Позволяют обратиться к первой букве (::first-letter), первой строке (::first-line), содержимому до (::before) или после (::after) элемента, а также к маркеру списка (::marker).

Наиболее часто используемые псевдоэлементы

::before и ::after

Самые универсальные псевдоэлементы. Они создают дочерний элемент внутри целевого, который по умолчанию является инлайн-элементом. Важное правило: для их отображения обязательно нужно задать свойство content.

.tooltip::after {
    content: "Подсказка"; /* Без content псевдоэлемент не появится */
    position: absolute;
    background: #333;
    color: white;
    padding: 5px;
    border-radius: 4px;
    top: 100%;
    left: 0;
}

Свойство content может содержать не только текст, но и изображение (url()), быть пустым для декоративных целей (content: "") или брать значение атрибута HTML (attr(data-tooltip)).

::first-letter и ::first-line

Позволяют стилизовать первую букву (буквицу) или первую строку текстового блока.

p::first-letter {
    font-size: 2.5em;
    font-weight: bold;
    color: #2c3e50;
    float: left;
    line-height: 1;
}

article::first-line {
    font-variant: small-caps;
    font-weight: bold;
    color: #2980b9;
}

::selection

Определяет стиль для текста, выделенного пользователем с помощью мыши.

::selection {
    background-color: #3498db; /* Цвет фона выделения */
    color: white; /* Цвет текста */
    text-shadow: none;
}

::placeholder

Стилизует текст-подсказку внутри полей ввода (<input>, <textarea>).

input::placeholder {
    color: #95a5a6;
    font-style: italic;
}

Практическое применение в веб-разработке

Псевдоэлементы — это основа многих современных техник вёрстки:

  • Декоративные элементы: Иконки, разделители, фигурные скобки, фон для заголовков.
  • Инструменты UI/UX: Кастомные тултипы, всплывающие подсказки, индикаторы состояния.
  • Чистый CSS-арт: Создание сложных фигур, анимаций и иллюстраций без единого изображения.
  • Оптимизация: Замена лишних HTML-тегов для иконок (галочек, стрелок) на ::before/::after с FontAwesome или SVG в content.
  • Типографика: Создание сложных буквиц, оформление цитат.

Пример комплексного использования

/* Создание кастомного списка с иконками-маркерами */
.custom-list li {
    position: relative;
    padding-left: 30px;
    margin-bottom: 10px;
}

.custom-list li::before {
    content: "✓";
    position: absolute;
    left: 0;
    top: 0;
    color: #27ae60;
    font-weight: bold;
}

/* Создание подчеркивания для заголовка с градиентом */
.fancy-heading {
    display: inline-block;
    font-size: 2rem;
}

.fancy-heading::after {
    content: "";
    display: block;
    height: 4px;
    width: 100%;
    background: linear-gradient(90deg, #e74c3c, #3498db);
    margin-top: 5px;
}

Важные нюансы и ограничения

  • DOM и JavaScript: Псевдоэлементы не являются частью DOM, поэтому их нельзя напрямую выбрать или модифицировать с помощью JavaScript (однако, можно читать/менять их стили через getComputedStyle).
  • Наследование: Стили псевдоэлементов наследуются от родительского элемента, если явно не переопределены.
  • Специфичность: Селектор с псевдоэлементом имеет такую же специфичность, как и обычный селектор (например, div::after аналогично div).
  • content для ::before/::after: Это обязательное свойство. Даже если оно пустое (content: ""), оно должно быть объявлено.

В заключение, псевдоэлементы — это не просто синтаксический сахар, а фундаментальная часть CSS, которая позволяет создавать визуально богатые, семантически чистые и производительные интерфейсы. Их грамотное использование отличает опытного верстальщика, способного решать задачи оформления средствами CSS, не загромождая HTML-структуру.