CSS функция attr()
Определение и применение
CSS функция attr() используется, чтобы получить значение атрибута выбранного элемента и использовать его.
Попробуйте функцию attr()
Измените data-label: псевдоэлемент ::after выводит его значение через content: attr(data-label). Попробуйте пустую строку или уберите атрибут — подпись исчезнет. Содержимое атрибута выводится как текст, а не HTML.
CSS выводит подпись из data-label.
<span class="sample" data-label="Новый урок">Карточка</span>.sample::after {
content: attr(data-label);
display: block;
}Поддержка браузерами
Спецификация: CSS values-5
Поддерживается во всех основных браузерах с 2015 года.
Отдельные значения (16) поддерживаются не везде — смотрите таблицу.
| Возможность | Компьютеры | Мобильные | ||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
attr | 2 | 12 | 1 | 9 | 3.1 | 18 | 4 | 10.1 | 2 | 1.0 | 4.4 | 2 |
| <attr-name> accepts namespaces | 155 | 155 | ||||||||||
declaration-value | 133 | 133 | 119 | 118 | 18.4 | 133 | 119 | 88 | 18.4 | 29.0 | 133 | 18.4 |
fallback | 133 | 133 | 119 | 118 | 18.4 | 133 | 119 | 88 | 18.4 | 29.0 | 133 | 18.4 |
| type(<syntax>) function | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
angle | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
color | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
custom-ident | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
ident | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
image | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
integer | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
length | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
length-percentage | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
number | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
percentage | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
resolution | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
string | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
time | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
transform-function | 133 | 133 | 155 | 118 | preview | 133 | 155 | 88 | 29.0 | 133 | ||
поддерживаетсяс ограниченияминет поддержкинет данных≤31 — не позднее версии 31
CSS синтаксис:
attr(имя атрибута); /* стандартный (рабочий) синтаксис */
attr(имя атрибута тип значения атрибута (необязательный, если опущен, то String), резервное значение атрибута ); /* эксперементальный синтаксис CSS 3 (в настоящее время не работает) */
Значения функции
| Значение | Описание |
|---|---|
attribute-name
|
Имя атрибута HTML элемента. Является обязательным значением. |
Версия CSS
CSS 2Примеры, попробуйте сами
Текст из HTML-атрибута
Измените data-status в HTML. Подпись после названия берётся из атрибута элемента.
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #24364b;
overflow-wrap: anywhere;
}
section {
margin-block: 16px;
padding: 12px;
border: 1px solid #a8b8c7;
}
p {
padding: 8px;
}
label {
display: block;
margin-block: 12px;
}
input,
button {
max-width: 100%;
font: inherit;
padding: 8px;
}
input[type='checkbox'] + label {
display: inline;
}
a {
color: #135fb5;
}
index.html
<html lang="ru">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Текст из HTML-атрибута</title>
</head>
<body>
<p class="product" data-status="Есть в наличии">Блокнот</p>
<p class="product" data-status="Под заказ">Альбом</p>
</body>
</html>
style.css
.product::after {
content: ' — ' attr(data-status);
color: #9b3c00;
}
Адрес ссылки при печати
Скачайте HTML, откройте файл в браузере и нажмите Ctrl+P: рядом с текстом ссылки появится её адрес.
base.css
* {
box-sizing: border-box;
}
body {
margin: 16px;
font:
16px/1.5 system-ui,
sans-serif;
color: #24364b;
overflow-wrap: anywhere;
}
section {
margin-block: 16px;
padding: 12px;
border: 1px solid #a8b8c7;
}
p {
padding: 8px;
}
label {
display: block;
margin-block: 12px;
}
input,
button {
max-width: 100%;
font: inherit;
padding: 8px;
}
input[type='checkbox'] + label {
display: inline;
}
a {
color: #135fb5;
}
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 href="https://example.com/">Описание проекта</a></p>
</body>
</html>
style.css
@media print {
a[href]::after {
content: ' (' attr(href) ')';
}
}