содержимое
Базовая линия Широко доступная
Эта функция хорошо зарекомендовала себя и работает на многих устройствах и версиях браузеров. Она доступна в браузерах с июля 2015 года.
Свойство content CSS заменяет содержимое сгенерированным значением. Оно может использоваться для определения того, что отображается внутри элемента или псевдоэлемента. Для элементов свойство content указывает, отображается ли элемент обычно (normal или none) или заменяется изображением (и соответствующим текстом "alt"). Для псевдоэлементов и полей отступов content определяет содержимое как изображения, текст, то и другое, или ничего, что определяет, отображается ли элемент вообще.
Объекты, вставленные с помощью свойства content являются анонимными заменяемыми элементами.
Попробуйте
Синтаксис
/* Keywords that cannot be combined with other values */
content: normal;
content: none;
/* <content-replacement>: <image> values */
content: url("http://www.example.com/test.png");
content: linear-gradient(#e66465, #9198e5);
content: image-set("image1x.png" 1x, "image2x.png" 2x);
/* speech output: alternative text after a "/" */
content: url("../img/test.png") / "This is the alt text";
/* <string> value */
content: "unparsed text";
/* <counter> values, optionally with <list-style-type> */
content: counter(chapter_counter);
content: counter(chapter_counter, upper-roman);
content: counters(section_counter, ".");
content: counters(section_counter, ".", decimal-leading-zero);
/* attr() value linked to the HTML attribute value */
content: attr(href);
/* <quote> values */
content: open-quote;
content: close-quote;
content: no-open-quote;
content: no-close-quote;
/* <content-list>: a list of content values.
Several values can be used simultaneously */
content: "prefix" url(http://www.example.com/test.png);
content: "prefix" url("/img/test.png") "suffix" / "Alt text";
content: open-quote counter(chapter_counter);
/* Global values */
content: inherit;
content: initial;
content: revert;
content: revert-layer;
content: unset;
Значения
Значение может быть:
- Одним из двух ключевых слов —
noneилиnormal. -
<content-replacement>при замене узла DOM.<content-replacement>всегда является<image>. - Список
<content-list>при замене псевдоэлементов и полей отступов. Список<content-list>— это список одного или нескольких анонимных встроенных блоков, появляющихся в указанном порядке. Каждый элемент списка<content-list>относится к типу<string>,<image>,<counter>,<quote>,<target>или<leader()>. - Необязательный альтернативный текст
<string>или<counter>, предваряемый косой чертой (/).
Ключевые слова и типы данных, упомянутые выше, описаны более подробно ниже:
none-
При применении к псевдоэлементу, псевдоэлемент не генерируется. При применении к элементу значение не оказывает влияния.
normal-
Значение по умолчанию. Вычисляется как
noneдля псевдоэлементов::beforeи::after. Для других псевдоэлементов содержимое будет начальным (или нормальным) ожидаемым содержимым для::marker,::placeholderили::file-selector-button. Для обычных элементов или полей отступов страницы это вычисляется как потомки элемента. <string>-
Последовательность символов, заключённая в одинарные или двойные кавычки. Несколько строковых значений будут конкатенированы (в CSS нет оператора конкатенации).
<image>-
<image>, представляющий изображение для отображения. Оно может быть равно<url>,image-set()или<gradient>, или частью веб-страницы, определённой функциейelement(). <counter>-
Значение
<counter>— это счётчик CSS, как правило, число, полученное по результатам вычислений, определённых свойствами<counter-reset>и<counter-increment>. Оно может быть отображено с помощью функцииcounter()илиcounters().counter()-
Функция
counter()имеет две формы: 'counter(name)' или 'counter(name, style)'. Сгенерированный текст — значение самого внутреннего счётчика с данным именем в области видимости в указанном псевдоэлементе. Оно отформатировано в указанном<list-style-type>(decimalпо умолчанию). counters()-
Функция
counters()также имеет две формы: 'counters(name, string)' или 'counters(name, string, style)'. Сгенерированный текст — значение всех счётчиков с данным именем в области видимости в указанном псевдоэлементе, от внешнего к внутреннему, разделённые указанной строкой. Счётчики отображаются в указанном<list-style-type>(decimalпо умолчанию).
<quote>-
Тип данных
<quote>включает ключевые слова, зависящие от языка и позиции:-
open-quoteиclose-quote -
Эти значения заменяются соответствующей строкой из свойства
quotes. -
no-open-quoteиno-close-quote -
Не вставляет содержимое, но увеличивает (уменьшает) уровень вложенности для кавычек.
-
<target>-
Тип данных
<target>включает три функции целевого назначения,<target-counter()>,<target-counters()>, и<target-text()>, которые создают перекрестные ссылки, полученные от целевого конца ссылки. См. Формальный синтаксис. <leader()>-
Тип данных
<leader()>включает функцию лидера:leader( <leader-type> ). Эта функция принимает ключевые словаdotted,solid, илиspace(равныеleader("."),leader("_"), иleader(" "), соответственно), или строковое значение<string>в качестве параметра. При поддержке и использовании в качестве значения дляcontent, предоставленный тип лидера будет вставлен как повторяющийся узор, визуально соединяющий содержимое по горизонтали. attr(x)-
Функция CSS
attr(x)извлекает значение атрибута выбранного элемента или элемента, породившего псевдоэлемент. Значение атрибута элементаx— это необработанная строка, представляющая имя атрибута. Если атрибутаxнет, возвращается пустая строка. Чувствительность к регистру параметра имени атрибута зависит от языка документа. -
альтернативный текст:
/ <string> | <counter> -
Альтернативный текст может быть указан для изображения или любого элемента
<content-list>путём добавления слэша и последующей строки текста или счётчика. Альтернативный текст предназначен для голосового вывода экранных читателей, но может также отображаться в некоторых браузерах. Обратите внимание, что если браузер не поддерживает альтернативный текст, объявлениеcontentбудет считаться недопустимым и будет проигнорировано. Типы данных/ <string>или/ <counter>задают "альтернативный текст" для элемента.
Формальное определение
| Начальное значение | normal |
|---|---|
| Применяется к | Все элементы, псевдоэлементы, соответствующие дереву, и поля отступов страницы |
| Наследуется | нет |
| Вычисленное значение | Для элементов всегда вычисляется как normal. Для ::before и ::after, если указано normal, вычисляется как none. В противном случае для значений URI — абсолютный URI; для значений attr() — результирующая строка; для других ключевых слов — как указано. |
| Тип анимации | дискретный |
Формальный синтаксис
content =
normal |
none |
[ <content-replacement> | <content-list> ] [ / [ <string> | <counter> | <attr()> ]+ ]? |
<element()>
<content-replacement> =
<image>
<content-list> =
[ <string> | <counter()> | <counters()> | <content()> | <attr()> ]+
<counter> =
<counter()> |
<counters()>
<attr()> =
attr( <attr-name> <attr-type>? , <declaration-value>? )
<element()> =
element( <id-selector> )
<image> =
<url> |
<gradient>
<counter()> =
counter( <counter-name> , <counter-style>? )
<counters()> =
counters( <counter-name> , <string> , <counter-style>? )
<content()> =
content( [ text | before | after | first-letter | marker ]? )
<attr-name> =
[ <ident-token> '|' ]? <ident-token>
<attr-type> =
type( <syntax> ) |
string |
<attr-unit>
<id-selector> =
<hash-token>
<url> =
<url()> |
<src()>
<counter-style> =
<counter-style-name> |
<symbols()>
<syntax> =
'*' |
<syntax-component> [ <syntax-combinator> <syntax-component> ]* |
<syntax-string>
<url()> =
url( <string> <url-modifier>* ) |
<url-token>
<src()> =
src( <string> <url-modifier>* )
<symbols()> =
symbols( <symbols-type>? [ <string> | <image> ]+ )
<syntax-component> =
<syntax-single-component> <syntax-multiplier>? |
'<' transform-list '>'
<syntax-combinator> =
'|'
<syntax-string> =
<string>
<symbols-type> =
cyclic |
numeric |
alphabetic |
symbolic |
fixed
<syntax-single-component> =
'<' <syntax-type-name> '>' |
<ident>
<syntax-multiplier> =
'#' |
'+'
<syntax-type-name> =
angle |
color |
custom-ident |
image |
integer |
length |
length-percentage |
number |
percentage |
resolution |
string |
time |
url |
transform-function
Универсальный доступ
Сгенерированное с помощью CSS содержимое не включено в DOM. По этой причине оно не будет представлено в дереве доступности, и некоторые сочетания вспомогательных технологий/браузеров не объявят его. Если содержимое содержит информацию, критическую для понимания назначения страницы, лучше включить его в основной документ.
Если вставленное содержимое не декоративное, убедитесь, что информация предоставлена вспомогательным технологиям и также доступна при отключенном CSS.
- Поддержка универсального доступа для сгенерированного с помощью CSS содержимого — Tink (2015)
- WCAG, Руководство 1.3: Создание содержимого, которое может быть представлено различными способами
- Понимание критерия успешности 1.3.1 | W3C Понимание WCAG 2.0
- Невыполнение критерия успешности 1.3.1: вставка недекоративного сгенерированного содержимого Техники для WCAG 2.0
Примеры
Первые пять примеров создают сгенерированное содержимое на псевдоэлементах. Последние три — примеры замещения элементов.
Добавление строк на основе класса элемента
В этом примере вставлен сгенерированный текст после текста элементов, имеющих определенное имя класса. Текст окрашен в красный цвет.
HTML
<h2>Paperback Best Sellers</h2> <ol> <li>Political Thriller</li> <li class="new-entry">Halloween Stories</li> <li>My Biography</li> <li class="new-entry">Vampire Romance</li> </ol>
CSS
.new-entry::after {
content: " New!"; /* The leading space creates separation
between the DOM node's content and the generated content
being added. */
color: red;
}
Результат
Кавычки
В этом примере вставляются кавычки разного цвета вокруг цитат.
HTML
<p>
According to Sir Tim Berners-Lee,
<q cite="http://www.w3.org/People/Berners-Lee/FAQ.html#Internet">
I was lucky enough to invent the Web at the time when the Internet already
existed - and had for a decade and a half.
</q>
We must understand that there is nothing fundamentally wrong with building on
the contributions of others.
</p>
<p lang="fr-fr">
Mais c'est Magritte qui a dit,
<q lang="fr-fr"> Ceci n'est pas une pipe. </q>.
</p>
CSS
q {
color: #00f;
}
q::before,
q::after {
font-size: larger;
color: #f00;
background: #ccc;
}
q::before {
content: open-quote;
}
q::after {
content: close-quote;
}
Результат
Обратите внимание, что тип сгенерированных кавычек зависит от языка. По умолчанию браузеры добавляют открывающие и закрывающие кавычки до и после элементов <q>, поэтому кавычки в этом примере появятся без их явного задания. Их можно было отключить, установив соответствующие значения свойств content и no-open-quote, или установив их оба на none. Их также можно отключить, установив свойство quotes в значение none.
Добавление текста к счётчикам элементов списка
В этом примере комбинируется счётчик, заключённый между двумя <string> перед всеми элементами списка, создавая более подробный маркер для элементов списка (<li>) в неупорядоченных списках (<ol>).
HTML
<ol>
<li>Dogs</li>
<li>Cats</li>
<li>
Birds
<ol>
<li>Owls</li>
<li>Ducks</li>
<li>Flightless</li>
</ol>
<li>Marsupials</li>
</li>
</ol>
CSS
ol {
counter-reset: items;
margin-left: 2em;
}
li {
counter-increment: items;
}
li::marker {
content: "item " counters(items, ".", numeric) ": ";
}
Результат
Сгенерированное содержимое на каждом маркере элемента списка добавляет текст «элемент » в качестве префикса, включая пробел для разделения префикса от счётчика, за которым следует ": ", двоеточие и дополнительный пробел. Функция counters() определяет числовой items счётчик, в котором числа вложенных упорядоченных списков в большинстве браузеров отделяются точкой (.) .
Строки со значениями атрибутов
Этот пример полезен для таблиц стилей для печати. Он использует селектор атрибута для выбора каждого полного квалифицированного защищенного ссылки, добавляя значение атрибута href после текста ссылки в качестве содержимого псевдоэлемента ::after.
HTML
<ul> <li><a href="https://mozilla.com">Mozilla</a></li> <li><a href="/">MDN</a></li> <li><a href="https://openwebdocs.org">OpenWebDocs</a></li> </ul>
CSS
a[href^="https://"]::after
{
content: " (URL: " attr(href) ")";
color: darkgreen;
}
Результат
Сгенерированное содержимое — значение атрибута href , предваряемое «URL: », со всеми пробелами в скобках.
Добавление изображения с альтернативным текстом
В этом примере перед всеми ссылками вставляется изображение. Предоставляются два значения content. Позднее значение content включает изображение с альтернативным текстом, который может быть выведен в качестве речи считывателем экрана. Если браузер не поддерживает альтернативный текст, это объявление будет считаться недействительным, и будет отображаться предыдущее значение content. Это резервное содержимое включает изображение и сообщение « — альтернативный текст не поддерживается — ».
HTML
<a href="https://www.mozilla.org/en-US/">Mozilla Home Page</a>
CSS
CSS для отображения изображения и установки альтернативного текста показан ниже. Он также устанавливает шрифт и цвет для содержимого. Это будет использоваться в браузерах, которые отображают альтернативный текст, и в браузерах, которые не поддерживают альтернативный текст и показывают резервное значение content.
a::before {
/* fallback content */
content: url("https://mozorg.cdn.mozilla.net/media/img/favicon.ico")
" - alt text is not supported - ";
/* content with alternative text */
content: url("https://mozorg.cdn.mozilla.net/media/img/favicon.ico") /
" MOZILLA: ";
font:
x-small Arial,
sans-serif;
color: gray;
}
Результат
Примечание: Если синтаксис альтернативного текста поддерживается, значение будет отображено в дереве доступности браузера. Обратитесь к разделу См. также для панелей доступности, специфичных для браузера.
При использовании программы чтения с экрана она должна произнести слово «MOZILLA», когда достигнет изображения. Если поддерживается (если «альтернативный текст не поддерживается» не отображается), вы можете выбрать псевдоэлемент ::before с помощью инструмента выбора инструментов разработчика и просмотреть доступное имя на панели доступности.
В браузерах, не поддерживающих синтаксис альтернативного текста, всё объявление, содержащее альтернативный текст, недействительно. В этом случае используется предыдущее значение content , отображая изображение и текст «альтернативный текст не поддерживается».
Замена элемента URL
В этом примере заменяется обычный элемент! Содержимое элемента заменяется SVG с использованием типа <url>.
Псевдоэлементы не отображаются на заменённых элементах. Поскольку этот элемент заменён, любые соответствующие ::after или ::before не генерируются и не применяются. Для демонстрации этого мы включаем блок объявления ::after, пытаясь добавить id в качестве сгенерированного содержимого. Этот псевдоэлемент не будет сгенерирован, поскольку элемент заменён.
HTML
<div id="replaced">This content is replaced!</div>
CSS
#replaced {
content: url("mdn.svg");
}
/* will not show if element replacement is supported */
div::after {
content: " (" attr(id) ")";
}
Результат
При генерации содержимого на обычных элементах (а не только на псевдоэлементах), весь элемент заменяется. Это означает, что ::before и ::after псевдоэлементы не генерируются.
Замена элемента градиентом
Этот пример демонстрирует, как содержимое элемента можно заменить любым типом <image>, в данном случае, CSS-градиентом. Содержимое элемента заменяется linear-gradient(). С помощью @supports мы обеспечиваем поддержку альтернативного текста и repeating-linear-gradient() для браузеров, поддерживающих альтернативный текст с заменой содержимого элемента.
HTML
<div id="replaced">I disappear</div>
CSS
div {
border: 1px solid;
background-color: #ccc;
min-height: 100px;
min-width: 100px;
}
#replaced {
content: linear-gradient(#639f, #c96a);
}
@supports (content: linear-gradient(#000, #fff) / "alt text") {
#replaced {
content: repeating-linear-gradient(blue 0, orange 10%) /
"Gradients and alt text are supported";
}
}
Результат
Проверьте таблицу совместимости браузеров здесь. Все браузеры поддерживают градиенты и все браузеры поддерживают замену элементов изображениями, но не все браузеры поддерживают градиенты в качестве значения content и не все браузеры поддерживают альтернативный текст для замещающих элементов. Если браузер отображает прямоугольник без градиента, то замена элементов поддерживается, но градиенты не поддерживаются в качестве значения замены содержимого. Если элемент заменён полосатым градиентом, то браузер поддерживает оба этих свойства.
Замена элемента наборами изображений
В этом примере содержимое элемента заменяется image-set(). Если у пользователя нормальное разрешение экрана, то будет отображаться 1x.png. На экранах с более высоким разрешением будет отображаться 2x.png изображение.
HTML
<div id="replaced">Mozilla</div>
CSS
#replaced {
content: image-set(
"1x.png" 1x,
"2x.png" 2x
);
}
Результат
Спецификации
Совместимость с браузерами
| Рабочий стол | Мобильные устройства | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| Chrome | Edge | Firefox | Opera | Safari | Chrome Android | Firefox для Android | Opera Android | Safari на IOS | Samsung Internet | WebView Android | |
content |
1 | 12 | 1 | 4 | 1 | 18 | 4 | 10.1 | 1 | 1.0 | 4.4 |
alt_text |
77 | 79 | 128 | 64 | 17.4 | 77 | 128 | 55 | 17.4 | 12.0 | 77 |
element_replacement |
28 | 79 | 63 | 7 | 9 | 28 | 63 | 10.1 | 9 | 1.5 | 4.4 |
gradient |
26 | 12 | 15 | 7 | 26 | 14 | 7 | 1.5 | 4.4 | ||
image-set |
11311320–113Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
11311379–113Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
899088–89Функцияtype() не поддерживается в качестве аргумента для image-set(). |
999915–99Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
171714–17Функцияtype() не поддерживается в качестве аргумента для image-set().14–17Функцияtype() не поддерживается в качестве аргумента для image-set().10.1–14Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения.6–14Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
11311325–113Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
899088–89Функцияtype() не поддерживается в качестве аргумента для image-set(). |
767614–76Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
171714–17Функцияtype() не поддерживается в качестве аргумента для image-set().14–17Функцияtype() не поддерживается в качестве аргумента для image-set().10.3–14Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения.6–14Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
23.023.01.5–23.0Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
1131134.4–113Поддержка только изображенийurl и x — единственная поддерживаемая единица измерения разрешения. |
none |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
none_applies_to_elements |
Нет | Нет | 91 | Нет | Нет | Нет | Нет | Нет | Нет | Нет | Нет |
normal |
1 | 12 | 1 | 15 | 1 | 18 | 4 | 14 | 1 | 1.0 | 4.4 |
url |
1 | 12 | 1 | 7 | 1 | 18 | 4 | 14 | 1 | 1.0 | 37 |
См. также
© 2005–2024 MDN contributors.
Licensed under the Creative Commons Attribution-ShareAlike License v2.5 or later.
https://developer.mozilla.org/en-US/docs/Web/CSS/content