CSS свойство content
Определение и применение
CSS свойство content используется с псевдоэлементами
:before и
:after для вставки сгенерированного
контента.
Попробуйте значения content
Меняется содержимое ::before. attr берёт подпись из data-label; none убирает псевдоэлемент. Текст самого элемента остаётся прежним.
content: "До: "
HTML и CSS примера
<div class="stage">
<div class="demo-target" data-label="Метка: ">Основной текст</div>
</div>
.stage {
width: 100%;
max-width: 300px;
color: #172c3d;
background: #edf2f5;
font: 18px/1.5 system-ui;
padding: 12px;
border: 2px dashed #607589;
}
.demo-target {
padding: 12px;
color: #b53625;
background: #ffe4bd;
border: 3px solid #245a85;
}
.demo-target::before {
content: "До: ";
}
.stage {
width: 100%;
max-width: 300px;
color: #172c3d;
background: #edf2f5;
font: 18px/1.5 system-ui;
padding: 12px;
border: 2px dashed #607589;
}
.demo-target {
padding: 12px;
color: #b53625;
background: #ffe4bd;
border: 3px solid #245a85;
}
.demo-target::before {
content: "★ ";
}
.stage {
width: 100%;
max-width: 300px;
color: #172c3d;
background: #edf2f5;
font: 18px/1.5 system-ui;
padding: 12px;
border: 2px dashed #607589;
}
.demo-target {
padding: 12px;
color: #b53625;
background: #ffe4bd;
border: 3px solid #245a85;
}
.demo-target::before {
content: attr(data-label);
}
.stage {
width: 100%;
max-width: 300px;
color: #172c3d;
background: #edf2f5;
font: 18px/1.5 system-ui;
padding: 12px;
border: 2px dashed #607589;
}
.demo-target {
padding: 12px;
color: #b53625;
background: #ffe4bd;
border: 3px solid #245a85;
}
.demo-target::before {
content: none;
}
Поддержка браузерами
Спецификация: CSS content
Поддерживается во всех основных браузерах с 2015 года.
Отдельные значения (2) поддерживаются не везде — смотрите таблицу.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
content | 1 | 12 | 1 | 4 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 | 1 |
| Alternative text after / | 77 | 79 | 128 | 64 | 17.4 | 77 | 128 | 55 | 17.4 | 12.0 | 77 | 17.4 |
counters | preview preview Версия 140 выпущена в 2025 г. — Частичная поддержка Примечание MDN (англ.) Counters are recognised, but the spoken values do not increment | 140 Версия 140 выпущена в 2025 г. — Частичная поддержка Примечание MDN (англ.) Counters are recognised, but the spoken values do not increment | 124 Версия 124 выпущена в 2025 г. — Частичная поддержка Примечание MDN (англ.) Counters are recognised, but the spoken values do not increment | 140 Версия 140 выпущена в 2025 г. — Частичная поддержка Примечание MDN (англ.) Counters are recognised, but the spoken values do not increment | 92 Версия 92 выпущена в 2025 г. — Частичная поддержка Примечание MDN (англ.) Counters are recognised, but the spoken values do not increment | 30.0 Версия 30.0 выпущена в 2026 г. — Частичная поддержка Примечание MDN (англ.) Counters are recognised, but the spoken values do not increment | 140 Версия 140 выпущена в 2025 г. — Частичная поддержка Примечание MDN (англ.) Counters are recognised, but the spoken values do not increment | |||||
close-quote | 1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
| Element replacement | 28 | 79 | 63 | 7 | 9 | 28 | 63 | 10.1 | 9 | 1.5 | 4.4 | 9 |
gradient | 26 | 12 | 113 Версия 113 выпущена в 2023 г. — Частичная поддержка Примечание MDN (англ.)
| 15 | 7 | 26 | 113 Версия 113 выпущена в 2023 г. — Частичная поддержка Примечание MDN (англ.)
| 14 | 7 | 1.5 | 4.4 | 7 |
image-set | 113 Версия 113 выпущена в 2023 г. Версия 113 выпущена в 2023 г. — Префикс -webkit- Версия 20 выпущена в 2012 г. — Удалено в 113; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 113 Версия 113 выпущена в 2023 г. Версия 113 выпущена в 2023 г. — Префикс -webkit- Версия 79 выпущена в 2020 г. — Удалено в 113; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 89 Версия 89 выпущена в 2021 г. Версия 90 выпущена в 2021 г. — Префикс -webkit- Версия 88 выпущена в 2021 г. — Удалено в 89; Частичная поддержка Примечание MDN (англ.) The | 99 Версия 99 выпущена в 2023 г. Версия 99 выпущена в 2023 г. — Префикс -webkit- Версия 15 выпущена в 2013 г. — Удалено в 99; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 17 Версия 17 выпущена в 2023 г. Версия 17 выпущена в 2023 г. — Префикс -webkit- Версия 14 выпущена в 2020 г. — Удалено в 17; Частичная поддержка Примечание MDN (англ.) The Версия 14 выпущена в 2020 г. — Удалено в 17; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) The Версия 10.1 выпущена в 2017 г. — Удалено в 14; Частичная поддержка Примечание MDN (англ.) Support for Версия 6 выпущена в 2012 г. — Удалено в 14; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 113 Версия 113 выпущена в 2023 г. Версия 113 выпущена в 2023 г. — Префикс -webkit- Версия 25 выпущена в 2013 г. — Удалено в 113; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 89 Версия 89 выпущена в 2021 г. Версия 90 выпущена в 2021 г. — Префикс -webkit- Версия 88 выпущена в 2021 г. — Удалено в 89; Частичная поддержка Примечание MDN (англ.) The | 76 Версия 76 выпущена в 2023 г. Версия 76 выпущена в 2023 г. — Префикс -webkit- Версия 14 выпущена в 2013 г. — Удалено в 76; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 17 Версия 17 выпущена в 2023 г. Версия 17 выпущена в 2023 г. — Префикс -webkit- Версия 14 выпущена в 2020 г. — Удалено в 17; Частичная поддержка Примечание MDN (англ.) The Версия 14 выпущена в 2020 г. — Удалено в 17; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) The Версия 10.3 выпущена в 2017 г. — Удалено в 14; Частичная поддержка Примечание MDN (англ.) Support for Версия 6 выпущена в 2012 г. — Удалено в 14; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 23.0 Версия 23.0 выпущена в 2023 г. Версия 23.0 выпущена в 2023 г. — Префикс -webkit- Версия 1.5 выпущена в 2013 г. — Удалено в 23.0; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 113 Версия 113 выпущена в 2023 г. Версия 113 выпущена в 2023 г. — Префикс -webkit- Версия 4.4 выпущена в 2013 г. — Удалено в 113; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for | 17 Версия 17 выпущена в 2023 г. Версия 17 выпущена в 2023 г. — Префикс -webkit- Версия 14 выпущена в 2020 г. — Удалено в 17; Частичная поддержка Примечание MDN (англ.) The Версия 14 выпущена в 2020 г. — Удалено в 17; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) The Версия 10.3 выпущена в 2017 г. — Удалено в 14; Частичная поддержка Примечание MDN (англ.) Support for Версия 6 выпущена в 2012 г. — Удалено в 14; Префикс -webkit-; Частичная поддержка Примечание MDN (англ.) Support for |
no-close-quote | 1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
no-open-quote | 1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
none | 1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
normal | 1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
open-quote | 1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 | 1 |
url | 1 | 12 | 1 | 7 | 1 | 18 | 4 | 14 | 1 | 1.0 | 37 | 1 |
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
CSS синтаксис:
content: normal | none | [ <content-replacement> | <content-list> ] [ / [ <string> | <counter> | <attr()> ]+ ]?;
/* Глобальные значения */
content: initial | inherit | unset | revert | revert-layer;
| — выбор варианта; [ ] — группа, а внутри типа — допустимый диапазон; ? —
необязательная часть; + — одно или несколько повторений; / — буквальный разделитель.
JavaScript синтаксис:
element.style.content = '"Подпись"';Начальное значение свойства
normal.
Значения свойства
| Значение | Описание |
|---|---|
normal |
Отсутствие контента (устанавливается как none для псевдоэлементов
:before и
:after).
Начальное значение.
|
none |
Отсутствие контента. |
counter |
Устанавливает контент в качестве счетчика (добавляет значение определённого счетчика). Используется совместно со
свойствами
counter-reset
и
counter-increment
|
attr(attribute) |
Выводит значение атрибута исходного элемента. Например,
a::after { content: " (" attr(href) ")"; } добавляет адрес в скобках после текста ссылки; HTML
ссылки не изменяется.
|
string |
Текстовая строка. Содержимое строки обязательно заключается в кавычки. |
open-quote |
Устанавливает открывающиеся кавычки. Вид кавычек может быть изменён свойством
quotes.
|
close-quote |
Устанавливает закрывающиеся кавычки. Вид кавычек может быть изменён свойством
quotes.
|
no-open-quote |
Не выводит знак кавычки, но увеличивает глубину вложенности цитат. Уже выведенные кавычки не удаляет. |
no-close-quote |
Не выводит знак кавычки, но уменьшает глубину вложенности цитат. Уже выведенные кавычки не удаляет. |
url(url) |
Вставляет изображение, например url("icon.svg"). Это не способ воспроизведения аудио или видео; для
них нужны HTML-элементы.
|
initial
|
Устанавливает начальное значение свойства. |
inherit
|
Наследует вычисленное значение свойства у родительского элемента. |
unset |
Для ненаследуемого свойства content устанавливает его
начальное значение.
|
revert |
Отменяет заданное в коде значение свойства для этого элемента: применяются пользовательские или стандартные стили браузера. Если они не задают значение, свойство наследуется или получает начальное значение по обычным правилам. Не возвращает значение из предыдущей строки CSS. |
revert-layer |
Сбрасывает значение свойства для текущего слоя каскада @layer. Применяется значение из другого слоя
по правилам каскада; если подходящего значения нет, возможен откат к стилям пользователя или браузера.
|
Сгенерированное содержимое
Псевдоэлемент не становится узлом DOM. Существенный текст и подписи элементов управления размещайте в HTML. Значение
content: "" создаёт пустой псевдоэлемент, который можно оформить, а none не создаёт
::before или ::after. Присваивание element.style.content относится к самому
элементу, а не к его псевдоэлементу: для последнего задайте CSS-правило.
Значения no-open-quote и no-close-quote управляют глубиной вложенности, не удаляя предыдущие
знаки: сравните внешнюю и внутреннюю цитаты.
Спецификация
CSS Generated Content — спецификация content.
Наследуется
Нет.
Анимируемое
Тип анимации — дискретный: значение переключается без плавных промежуточных положений.
Примеры, попробуйте сами
Пример CSS свойства content
Измените символ в content у li::before. Маркер создаётся CSS и отсутствует в тексте HTML; список сохраняет свою HTML-структуру.
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #172c3d;
}
section {
margin-bottom: 24px;
min-width: 0;
}
h3 {
margin: 0 0 12px;
font-size: 16px;
}
.item {
padding: 8px;
min-width: 0;
background: #c5dbea;
border: 1px solid #35658a;
overflow-wrap: anywhere;
}
li:before {
padding-right: 10px;
color: red;
}
index.html
<html lang="ru">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charset="UTF-8" />
<title>Пример CSS свойства content</title>
</head>
<body>
<ul>
<li>Элемент списка</li>
<li>Элемент списка</li>
<li>Элемент списка</li>
</ul>
</body>
</html>
style.css
ul {
list-style: none;
}
li:before {
content: '•';
}
Автоматическая нумерация
Замените counter-increment: chapter на chapter 2: номера в content будут увеличиваться на два. Измените текст вокруг counter(chapter).
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #172c3d;
}
section {
margin-bottom: 24px;
min-width: 0;
}
h3 {
margin: 0 0 12px;
font-size: 16px;
}
.item {
padding: 8px;
min-width: 0;
background: #c5dbea;
border: 1px solid #35658a;
overflow-wrap: anywhere;
}
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Автоматическая нумерация</title>
</head>
<body>
<div class="chapters">
<h3 class="sample">Введение</h3>
<h3 class="sample">Разметка</h3>
<h3 class="sample">Стили</h3>
</div>
</body>
</html>
style.css
.chapters {
counter-reset: chapter;
}
.sample::before {
counter-increment: chapter;
content: counter(chapter) '. ';
}
Пример CSS свойства content
Замените attr(title) на attr(href): после текста ссылки появится адрес вместо значения title. Чтобы добавить пробел или скобки, включите их в строковые части content.
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #172c3d;
}
section {
margin-bottom: 24px;
min-width: 0;
}
h3 {
margin: 0 0 12px;
font-size: 16px;
}
.item {
padding: 8px;
min-width: 0;
background: #c5dbea;
border: 1px solid #35658a;
overflow-wrap: anywhere;
}
index.html
<html lang="ru">
<head>
<meta name="viewport" content="width=device-width, initial-scale=1" />
<meta charset="UTF-8" />
<title>Пример CSS свойства content</title>
</head>
<body>
<a href="http://www.basicweb.ru" title="Basicweb.ru"></a>
</body>
</html>
style.css
a:after {
content: '' attr(title) '';
}
Внешние и вложенные кавычки
Измените пары в quotes. Затем замените content: open-quote на none: начальная кавычка и увеличение уровня вложенности исчезнут.
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #172c3d;
}
section {
margin-bottom: 24px;
min-width: 0;
}
h3 {
margin: 0 0 12px;
font-size: 16px;
}
.item {
padding: 8px;
min-width: 0;
background: #c5dbea;
border: 1px solid #35658a;
overflow-wrap: anywhere;
}
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width,initial-scale=1" />
<title>Внешние и вложенные кавычки</title>
</head>
<body>
<p class="sample">
<q>Цитата с <q>вложенной цитатой</q> внутри</q>
</p>
</body>
</html>
style.css
.sample {
quotes: '«' '»' '‹' '›';
}
q::before {
content: open-quote;
}
q::after {
content: close-quote;
}
Невидимая кавычка меняет вложенность
В B внешняя цитата не рисует кавычки, но no-open-quote и no-close-quote учитывают её уровень: внутренняя цитата использует вторую пару. Замените оба значения на none — внутренняя цитата перейдёт к первой паре.
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Невидимая кавычка меняет вложенность</title>
</head>
<body>
<p>
A: <q>Внешняя цитата с <q>внутренней</q></q>
</p>
<p>
B: <q class="silent">Внешняя цитата с <q>внутренней</q></q>
</p>
</body>
</html>
style.css
body {
quotes: '«' '»' '„' '“';
}
q::before {
content: open-quote;
}
q::after {
content: close-quote;
}
.silent::before {
content: no-open-quote;
}
.silent::after {
content: no-close-quote;
}