CSS attr() — значення атрибута в стилях


Опис

Функція attr() в CSS дозволяє отримувати значення атрибутів HTML елементів та використовувати їх у стилях. Ця функція дозволяє створювати гнучкі стилі, які залежать від атрибутів елементів.

Формат використання функції attr() такий: attr(назва-атрибута), де назва-атрибута – це назва атрибута, значення якого потрібно отримати.

Приклад використання:

Уявімо, що у HTML елементі <a> є атрибут data-text. Ми можемо використовувати значення цього атрибута в функції attr() для встановлення текстового вмісту псевдоелемента ::before:

a::before {
  content: attr(data-text);
}

В цьому прикладі значення атрибута data-text буде використано як текстовий вміст псевдоелемента ::before для елементів <a>. Таким чином, вміст буде динамічно залежати від значення атрибута.

Функція attr() також може застосовуватися для встановлення інших властивостей, наприклад, фону, розміру шрифту чи кольору. Вона дає можливість створювати стилі, що адаптуються до атрибутів елементів.

автор: Bond

Загальний опис

автор: NagarD

Порада

Перевірте, чи атрибут, значення якого хочете використати, присутній у вашому HTML-коді.

автор: Bond
Нотатка

Використовуйте резервне значення (fallback value), якщо значення атрибута відсутнє, щоб забезпечити правильне відображення стилів.

автор: Bond
Нотатка

Важливо відзначити, що підтримка функції attr() залежить від браузера і може бути обмежена на деяких платформах чи версіях. Деякі властивості можуть не підтримувати функцію attr(). Для докладної інформації про підтримку і сумісність функції attr(), рекомендується перевірити секцію "Переглядачі".

автор: Bond

Синтаксис

attr(<attribute-name>, <fallback-value?>);

Функція attr може отримувати 2 значень:

<attribute-name>

Назва атрибута, значення якого ви хочете використати. Наприклад, data-color, aria-label тощо.

автор: Bond

<fallback-value>

Значення, яке буде використовуватись як резервне, якщо атрибут не має значення або не існує. Може бути будь-яким допустимим значенням CSS, таким як кольори, розміри, фони тощо.

автор: Bond

Переглядачі

Підтримка: стаціонарні переглядачі
Переглядач Google Chrome Mozilla Firefox Apple Safari Opera Microsoft EDGE Microsoft Internet Explorer
2 1 3.1 9 12 8
Підтримка: мобільні переглядачі
Переглядач Mobile Google Android Mobile Google Chrome Mobile Mozilla Firefox Mobile Apple Safari
4.4 18 4 2

Приклади

+ запропонувати свій приклад у пісочниці

Цей приклад демонструє зміну фонового кольору елемента в залежності від значення атрибута data-color.

HTML

<div id="description">
  <h1>Зміна фону в залежності від значення атрибута</h1>
  <p>Цей приклад демонструє зміну фонового кольору елемента в залежності від значення атрибута "data-color".</p>
</div>

<div id="result">
  <div class="container">
    <div class="box" data-color="red">
      <span>фоновий колір буде червоним, якщо ваш браузер не підтримує розширене використання функції attr()</span>
    </div>
    <div class="box" data-color="green">
      <span>фоновий колір буде червоним, якщо ваш браузер не підтримує розширене використання функції attr()</span>
    </div>
  </div>
</div>

CSS

#description {
  background-color: #f0f0f0;
  padding: 20px;
  text-align: center;
}

#description h1 {
  font-family: Arial, sans-serif;
  font-size: 24px;
  margin-bottom: 10px;
}

#description p {
  font-family: Arial, sans-serif;
  font-size: 16px;
  margin-bottom: 0;
}

#result {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 20px;
}

.container {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 200px;
  background-color: #f0f0f0;
}

.box {
  background-color: red;
  padding: 5px;
  color: #fff;
}

.box {
  width: 150px;
  height: 150px;
  margin: 0 10px;
  background-color: attr(data-color color, red);
}
автор: Bond

Цей приклад демонструє додавання інформації з атрибутів до елементів списку за допомогою псевдоелемента ::after.

HTML

<div id="description">
  <h1>Додавання інформації з атрибутів</h1>
  <p>Цей приклад демонструє додавання інформації з атрибутів до елементів списку за допомогою псевдоелемента ::after.</p>
</div>

<div id="result">
  <ul class="list">
    <li data-info="Це перший елемент">Елемент 1</li>
    <li data-info="Це другий елемент">Елемент 2</li>
    <li data-info="Це третій елемент">Елемент 3</li>
  </ul>
</div>

CSS

#description {
  background-color: #f0f0f0;
  padding: 20px;
  text-align: center;
}

#description h1 {
  font-family: Arial, sans-serif;
  font-size: 24px;
  margin-bottom: 10px;
}

#description p {
  font-family: Arial, sans-serif;
  font-size: 16px;
  margin-bottom: 0;
}

#result {
  display: flex;
  justify-content: center;
  align-items: center;
  margin-top: 20px;
}

.list {
  list-style-type: none;
  padding: 0;
}

.list li {
  position: relative;
  padding-left: 20px;
  margin-bottom: 10px;
}

.list li::after {
  content: attr(data-info);
  position: absolute;
  top: 2px;
  left: -100%;
  font-family: Arial, sans-serif;
  font-size: 12px;
  color: #666;
}
автор: Bond

Перший рядок працює: content: attr(data-count) підставляє значення атрибута в псевдоелемент. Другий не працює жодним чином — width: attr(data-width) недійсне, і смуга лишається на всю ширину. Третій показує робочу заміну: те саме значення передано інлайновою змінною.

HTML

<div id="description">
  <h2>Де attr() працює, а де ні</h2>
  <p>Значення в усіх трьох випадках приходить із HTML. Різниця в тому, куди його підставляють.</p>
</div>

<div id="result">
  <p class="label">content: attr(data-count) — працює</p>
  <p><span class="badge" data-count="7">Непрочитані повідомлення</span></p>

  <p class="label">width: attr(data-width) — не працює ніде</p>
  <div class="bar broken" data-width="40%">attr()</div>

  <p class="label">width: var(--w), значення з style="--w: 40%" — працює</p>
  <div class="bar ok" style="--w: 40%">var()</div>
</div>

CSS

#description {
  font-style: italic;
  line-height: 1.5;
  margin-bottom: 30px;
  padding: 12px 16px;
  background-color: #f7f7f7;
  border: 1px solid #ccc;
}

#result {
  max-width: 480px;
  margin: 0 auto;
  font: 15px/1.5 Arial, sans-serif;
}

.label {
  margin: 22px 0 6px;
  font: 13px/1.4 monospace;
  color: #555;
}

.badge[data-count]::after {
  content: attr(data-count);
  display: inline-block;
  min-width: 20px;
  margin-left: 8px;
  padding: 2px 6px;
  border-radius: 10px;
  background: #e11d48;
  color: #fff;
  font-size: 13px;
  text-align: center;
}

.bar {
  box-sizing: border-box;
  padding: 10px;
  color: #fff;
  font: 13px/1.2 monospace;
}

.broken {
  width: attr(data-width);
  background: #9ca3af;
}

.ok {
  width: var(--w);
  background: #2f6fed;
}
автор: NagarD

Коментарі

Коментарів ще немає — будьте першим!

Відповідь для

Як форматувати текст?
Пишемо Виходить
**важливо**
*акцент*
~~застаріле~~
Виділення в тексті. Те саме роблять кнопки панелі, що спливає над виділеним.
## Як працює каскад
### Порядок оголошень
Заголовки всередині тексту. Найбільший не потрібен — він у сторінки вже є.
[[css/property/color]] Посилання на сторінку довідника. Наберіть [[ — поле веде сходинками (розділ → тип → сторінка), а хибний ключ підкреслить хвилею.
[[!sandbox/S0oh1hBm]] Живий приклад окремим рядком — саме вікно результату. Той самий ключ зі знаком !: наберіть [[! і дійдіть сходинками до потрібної сторінки, список покаже її приклади.
[MDN](https://developer.mozilla.org) Посилання на чужий сайт.
![Схема каскаду](https://site.com/схема.png) Картинка. Опис обов'язковий: його читають пошуковик і незрячі.
Задайте `display: grid` контейнеру Код усередині речення.
```css
.card { display: grid }
```
Код блоком. Мова після трьох лапок вмикає підсвітку.
- Походження
1. Походження
Перелік: маркований і нумерований.
- [ ] дописати приклади
- [x] перевірити в Firefox
Перелік завдань із галочками. Пробіл у порожніх дужках обов'язковий.
> Порядок важить лише за рівної ваги. Цитата на всю ширину абзацу.
Специфічність
: вага селектора; більша перемагає
Список означень: термін, а під ним пояснення з відступом. Пробіл після двокрапки обов'язковий.
Каскад має три критерії[^1]
[^1]: Походження, специфічність, порядок.
Виноска: номер у тексті, примітка внизу сторінки. Без згадки [^1] у тексті примітка не з'явиться.
Відповідь: ||сорок два|| Ховає те, що між рисками: читач бачить на цьому місці розмиту пляму, а решта речення лишається звичайною. Клац — і текст відкрито.
|| Показати рішення
Задайте контейнеру `display: grid`.
||
Ховає цілі абзаци. На сторінці видно лише підпис із першого рядка («Показати рішення»), решта розгортається клацанням по ньому. Закривні риски — окремим рядком.
Порожній рядок Новий абзац. Щоб перенести рядок усередині абзацу, поставте \ в його кінці.

Увійдіть — коментар з'явиться одразу, без капчі й очікування перевірки.

Правка
Зворотний зв'язок
Вхід