Що таке атрибути даних (data) в HTML5 і як їх використовувати

Сьогоднішня стаття присвячена розгляду нововведення в HTML5 – користувацьких атрибутів даних (data). Ви дізнаєтеся, що таке атрибути data, навіщо вони потрібні, і як їх можна використовувати.

 

 

Навіщо потрібні атрибути даних?

Дуже часто розробникам потрібно зберігати певну інформацію, пов’язану з різними елементами DOM. Найчастіше така інформація більше потрібна саме програмістам, а не відвідувачам сайту. Припустимо, вам потрібно визначати тип блоку DOM (section, footer і т.д.) і привласнювати йому ідентифікатор, щоб пізніше додавати до нього певні CSS стилі.

Це легко можна зробити і за допомогою атрибутів id або class. Але, іноді, такого рішення мало. З огляду на наступні обмеження:

  • Атрибут class не призначений для зберігання розширених даних. Його основна мета – привласнювати CSS стилі певному набору елементів.
  • Якщо нам потрібен додатковий обсяг інформації, ми змушені додавати новий клас до елементу. Це може ускладнювати синтаксичний аналіз даних в JavaScript.
  • Якщо ім’я класу починається з цифр, пізніше це ускладнить присвоєння стилів, оскільки доведеться або екранувати числа, або використовувати інші селектори атрибутів в таблиці стилів.

 

Щоб вирішити ці завдання, в HTML5 були введені атрибути даних. Всі атрибути елемента, назва якого починається з data-, є атрибутами даних. Ці атрибути даних можна використовувати і для присвоєння стилів елементам DOM.

 

 

Синтаксис користувальницьких атрибутів даних в HTML5

Назва атрибута даних завжди починається з data-. Наприклад:

<div data-element-type="section" data-nonce="bfc9a753f7" data-id="25018">
  Section
</div>

 

Крім префікса data-, назва допустимого користувацького атрибуту даних може містити тільки латинські букви, цифри, дефіс (), крапку (.), двокрапку (:) або підкреслення (_). Для назви не можна використовувати великі літери.

 

Зауваження щодо використання атрибутів даних:

  • По-перше, дані, що зберігаються в цих атрибутах, повинні мати тип string. Все, що може бути закодовано у вигляді рядка, також може зберігатися в атрибутах даних. Якщо потрібно виконати перетворення типів, використовуйте для цього JavaScript.
  • По-друге, атрибути даних повинні використовуватися тільки тоді, коли немає інших відповідних HTML-елементів або атрибутів. Наприклад, недоречно зберігати клас елемента в атрибуті data-class.
  • По-третє, елемент може містити будь-яку кількість атрибутів даних з будь-яким допустимим значенням.

 

 

Тепер давайте перейдемо до розгляду практичного застосування атрибутів даних і дізнаємося, як отримати доступ до їх значень в CSS і JavaScript.

 

 

Доступ до атрибутів даних в CSS

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

Якщо взяти приклад з типами блоків, ви можете по-різному стилізувати їх фоновий колір. Приклад селектора в CSS:

div[data-element-type='section'] {
  background: #ccc;
}

 

 

Створення спливаючих підказок з атрибутом data

Ви можете використовувати спливаючі підказки, щоб показати користувачам деяку додаткову інформацію, пов’язану з елементом. Інформація, яку ви хочете показати, може зберігатися в атрибуті data-tooltip.

<span data-tooltip="Приклад підказки (tooltip)">Підказка</span>

 

Потім ви можете показувати ці дані користувачеві з допомогою псевдоелемента ::before.

span.tooltip::before {
 content: attr(data-tooltip);
 position: absolute;
 top: 25px;
 font-size: 15px;
 display: none;
}
span.tooltip:hover::before {
 display: inline-block;
}

 

 

Доступ до атрибутів даних за допомогою JavaScript

Ви можете отримати доступ до атрибутів даних в JavaScript за допомогою різних способів.

 

Спосіб №1: Використання getAttribute і setAttribute

Метод getAttribute повертає або пусте значення (null), або порожній рядок, якщо даний атрибут не існує. Ось приклад використання цього методу:

var element = document.getElementById("some-block");
var blockType = element.getAttribute("data-element-type");

 

Ви можете використовувати метод setAttribute, щоб змінити значення існуючих атрибутів або додати нові атрибути.

element.setAttribute("data-id", "newId");

 

 

Спосіб №2: Використання jQuery

Ви також можете використовувати метод jQuery data() для доступу до атрибутів даних елемента. До версії jQuery 1.6 використовувався наступний код для доступу до атрибутів даних:

var element = $("#some-block");
var blockType = element.data("element-type");
element.data("element-type", "newData");

 

Починаючи з версії jQuery 1.6 використовується версія атрибутів даних у форматі camelCase (ВерблюжийРегістр). Тепер ви можете зробити те ж саме, використовуючи наступний код:

var element = $("#some-block");
var blockType = element.data("elementType");
element.data("elementType", "newData");

 

 

 

Короткий підсумок

У сьогоднішній статті ми розглянули основні моменти, які вам потрібно знати про атрибути даних (data-) в HTML5. Крім створення спливаючих підказок і стилізації елементів за допомогою селекторів атрибутів, ви можете використовувати атрибути даних для зберігання і відображення користувачам різних даних, таких як повідомлення про непрочитані повідомлення та маси інших.

Дякуємо, що читаєте нас!

 

Share

Останні пости

Антуан де Сент-Екзюпері

Ніколи не втрачай терпіння — це останній ключ, що відкриває двері Антуан де Сент-Екзюпері   Читати далі

28/03/2024

Сомерсет Моем

Подорослішавши, ви збагнете, що світ стає стерпним за однієї умови: коли розумієш, що людський егоїзм… Читати далі

27/03/2024

Михайло Грушевський

Всі вчаться своєї рідної мови, а наша біда така, що треба вчитися її більше, ніж… Читати далі

26/03/2024

ТОП-5 покерних обмінників

Професійний покер – це численні турніри та великі гроші, що потребує правильного налаштування фінансових інструментів.… Читати далі

25/03/2024

Гай Юлій Цезар

Всі довкола прагнуть винищити ворогів, а не об'єднатися з друзями Гай Юлій Цезар   Читати далі

24/03/2024

Як вибрати оптимальний смартфон для дитини?

Сьогоднішні діти стикаються з технологіями вже в ранньому віці, і смартфон давно перестав бути просто… Читати далі

22/03/2024