Що таке атрибути даних (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. Крім створення спливаючих підказок і стилізації елементів за допомогою селекторів атрибутів, ви можете використовувати атрибути даних для зберігання і відображення користувачам різних даних, таких як повідомлення про непрочитані повідомлення та маси інших.

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

 

This post was last modified on 22/07/2019 16:03

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

Генрі Форд

Людина має два мотиви поведінки — один справжній та інший, що гарно звучить Генрі Форд…

16/07/2024

Фрідріх Ніцше

Не треба додумувати надто багато. Так ви створюєте проблеми, яких не існувало Фрідріх Ніцше  

11/07/2024

Такий різний інвертор! Вибираємо між кондиціонерами Inverter, Inverter DC та Full DC

Літо в розпалі, а значить якраз час задуматися про покупку кондиціонера. Але як не загубитися…

06/07/2024

Омар Хайям

Справжній друг — це людина, яка в очі викаже тобі все, що про тебе думає,…

30/06/2024

Корисні поради щодо вибору розсувних дверей

Варто знати, що функціональність і дизайн працюють рука об руку, коли ви використовуєте розсувні двері.…

29/06/2024

Геракліт

Єдине, що постійне, — це зміни. Немає нічого постійного окрім змін. Усе плине, усе змінюється.…

23/06/2024