Все справочники находятся в стадии наполнения. Если у вас есть идеи на счёт того как улучшить этот раздел, то вы можете оставить комментарий под конкретной записью или написать свои предложения по адресу [email protected].

::before

CSS::before
mangohost

::before - это псевдоэлемент, который позволяет добавлять содержимое на страницу с помощью CSS.

Общие сведения

Содержимое добавленное с помощью ::before появляется перед остальным содержимым внутри элемента и по умолчанию отображается в строковом виде. Значение содержимого указывается с помощью свойства content.

Синтаксис псевдоэлемента

/* Старый синтаксис CSS2*/

.element:before {
  /* Здесь содержимое и стили */
}

/* Новый синтаксис CSS3 */

.element::before {
  /* Здесь содержимое и стили */
}

Поддержка браузерами

CSS Generated content for pseudo-elements

IE
9
0.06%
10
0%
11
0.5%
Edge
121
0.2%
122
3.96%
123
0.31%
Firefox
122
0.06%
123
1.09%
124
0.45%
125
0%
126
0%
Chrome
121
1.69%
122
12.58%
123
3.51%
124
0.02%
125
0%
Safari
17.2
0.28%
17.3
1.12%
17.4
0.22%
17.5
0%
TP
0%
Safari on iOS
17.2
0.61%
17.3
7.43%
17.4
1.09%
17.5
0%
Chrome for Android
123
42.29%

Internet Explorer не поддерживает свойство z-index на псевдоэлементах.

Примечание

Разница между нотациями: (:) и (::)

Скорее всего вы встретите (или уже встречали) нотацию :before, которая использует одно двоеточие вместо двух.

В CSS1 и CSS2 псевдоэлементы определялись с помощью одного двоеточия (:), также как и псевдоклассы (например :hover). В CSS3 для псевдоэлементов была добавлена нотация с двумя двоеточиями чтобы отличать их от псевдоклассов.

Все браузеры, которые поддерживают нотацию с двумя двоеточиями также поддерживают и нотацию с одним двоеточием. Однако, Internet Explorer 8 не поддерживает нотацию с двойным двоеточием. Поэтому если вам не нужна поддержка Internet Explorer 8, то можете использовать вариант с двумя двоеточиями и не беспокоится за поддержку браузерами.

Доступность

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

Псевдоэлементы в основном используются для добавления и стилизации косметического содержимого и на них нельзя полагаться при добавлении контента, который имеет отношение к значению и полноте содержимого на странице.
Кроме того, так как содержимое добавленное с помощью псевдоэлементов не добавляется в DOM, это означает, что вы не сможете применить к нему какие-либо обработчики событий с помощью JavaScript.

Пример

Ниже показан пример реализации эффекта наведения на элементы меню с помощью псевдоэлемента :before.

mangohost