логотип PurpleSchool
Иконка входа
Вход
  • Обучение
  • Войти
логотип PurpleSchool

Псевдоэлементы в CSS. Полное руководство с примерами

Автор

Дмитрий Нечаев

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

Основные псевдоэлементы

::before и ::after

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

Пример использования ::before и ::after

/* Добавление контента перед элементом */
p::before {
  content: "Примечание: ";
  font-weight: bold;
  color: red;
}

/* Добавление контента после элемента */
p::after {
  content: " (конец)";
  font-style: italic;
  color: gray;
}
<p>Это пример текста.</p>

В этом примере перед текстом абзаца добавляется слово "Примечание: " с красным цветом и жирным шрифтом, а после текста добавляется слово "(конец)" с серым цветом и курсивом.

::first-line

Псевдоэлемент ::first-line применяется к первой строке блока текста. Это полезно для стилизации первой строки текста, чтобы выделить её визуально.

Пример использования ::first-line

p::first-line {
  font-weight: bold;
  color: blue;
}
<p>Это пример текста, где первая строка будет выделена жирным шрифтом и синим цветом.</p>

В этом примере первая строка текста абзаца будет выделена жирным шрифтом и синим цветом.

::first-letter

Псевдоэлемент ::first-letter применяется к первой букве блока текста. Это полезно для создания эффектов, таких как "инициалы" в начале параграфов.

Пример использования ::first-letter

p::first-letter {
  font-size: 2em;
  color: green;
  float: left;
  margin-right: 5px;
}
<p>Это пример текста, где первая буква будет увеличена и окрашена в зеленый цвет.</p>

В этом примере первая буква текста абзаца будет увеличена и окрашена в зеленый цвет, а также смещена влево с отступом справа.

::placeholder

Псевдоэлемент ::placeholder применяется к тексту плейсхолдера внутри элементов <input> и <textarea>. Это позволяет стилизовать текст, который отображается до ввода данных пользователем.

Пример использования ::placeholder

input::placeholder {
  color: gray;
  font-style: italic;
}
<input type="text" placeholder="Введите ваше имя">

В этом примере текст плейсхолдера будет серым и курсивным.

Расширенные примеры

Создание сложных декоративных элементов

Псевдоэлементы ::before и ::after можно использовать для создания сложных декоративных элементов без изменения HTML-разметки.

Пример: Создание кавычек

blockquote::before {
  content: open-quote;
  font-size: 2em;
  vertical-align: -0.4em;
  color: lightgray;
}

blockquote::after {
  content: close-quote;
  font-size: 2em;
  vertical-align: -0.4em;
  color: lightgray;
}
<blockquote>Это пример цитаты, где используются псевдоэлементы для добавления кавычек.</blockquote>

В этом примере к цитате добавляются кавычки до и после текста, используя псевдоэлементы ::before и ::after.

Создание настраиваемых списков

Псевдоэлементы позволяют настраивать маркеры списков, заменяя стандартные маркеры на кастомные.

Пример: Кастомные маркеры списков

ul.custom-list li::before {
  content: "•";
  color: red;
  font-size: 1.5em;
  margin-right: 10px;
}
<ul class="custom-list">
  <li>Элемент списка 1</li>
  <li>Элемент списка 2</li>
  <li>Элемент списка 3</li>
</ul>

В этом примере маркеры списка заменяются на красные точки с использованием псевдоэлемента ::before.

Создание ленты новостей

Псевдоэлементы могут быть использованы для создания декоративных элементов в ленте новостей.

Пример: Лента новостей

.news-item {
  position: relative;
  padding-left: 20px;
  margin-bottom: 10px;
}

.news-item::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0;
  width: 10px;
  height: 100%;
  background-color: blue;
}
<div class="news-item">Новость 1</div>
<div class="news-item">Новость 2</div>
<div class="news-item">Новость 3</div>

В этом примере создаётся лента новостей с синей полосой слева от каждого элемента, используя псевдоэлемент ::before.

Заключение

Псевдоэлементы в CSS предоставляют мощные инструменты для улучшения визуального оформления веб-страниц без необходимости изменять HTML-код. Понимание различных способов использования псевдоэлементов, таких как ::before, ::after, ::first-line, ::first-letter и ::placeholder, помогает разработчикам создавать более гибкие и адаптивные стили. Экспериментируйте с псевдоэлементами, чтобы найти оптимальные решения для ваших проектов и добавить изюминку в дизайн ваших веб-страниц.

Карта развития разработчика

Получите полную карту развития разработчика по всем направлениям: frontend, backend, devops, mobile