Los atributos data-* en HTML: qué son y cómo usarlos

En el desarrollo web moderno, uno de los recursos más prácticos y versátiles que nos ofrece HTML5 son los atributos de datos personalizados, conocidos como data-*. Estos atributos permiten almacenar información adicional en los elementos del documento sin necesidad de crear nuevas propiedades o sobrecargar atributos existentes.


¿Qué son los atributos data-*?

Los atributos data-* son atributos personalizados que siguen el formato:

Donde:

  • data- es el prefijo obligatorio.
  • nombre es un identificador libre definido por el desarrollador (debe estar en minúsculas y, si es compuesto, usar guiones).
  • valor es el contenido que se desea almacenar, siempre en formato de cadena.

Ejemplo simple:

En este caso, el botón almacena datos relacionados con un producto: su identificador y la cantidad en stock.


Ventajas de usar data-*

  • Flexibilidad: permiten guardar información sin necesidad de modificar el HTML estándar.
  • Compatibilidad: son compatibles con todos los navegadores modernos.
  • Integración con JavaScript: se pueden leer y manipular fácilmente con el DOM.
  • Evitan el abuso de clases o IDs: a veces se usaban para almacenar información, lo cual era incorrecto semánticamente.

Acceso desde JavaScript

JavaScript proporciona una forma muy sencilla de acceder a estos atributos mediante la propiedad dataset.

Ejemplo:

Importante: cuando un atributo tiene guiones, en JavaScript se convierte a camelCase.

Ejemplo:


Buenas prácticas

  • Usarlos solo para datos relacionados con el elemento. No deben sustituir a una base de datos ni almacenar grandes cantidades de información.
  • Mantener los nombres claros y descriptivos. Ejemplo: data-precio, data-categoria, data-user-id.
  • No abusar de ellos.
  • Si la información pertenece al contenido visible, debería estar en el propio texto del HTML, no en data-*.

Casos de uso comunes

Identificadores o claves de elementos:

Opciones de configuración en componentes:

Almacenar metadatos de productos en e-commerce:

Personalización de eventos JavaScript:

Y mi favorito, cambiar idioma con data-* y JSON

Supongamos que tienes dos archivos JSON, uno por idioma:

En el HTML, cada elemento lleva un data-key que indica qué texto cargar del JSON:

Y en JavaScript haces algo así:

Los atributos data-* en HTML son una herramienta poderosa y sencilla para enriquecer los elementos del DOM con información adicional. Gracias a su integración nativa con JavaScript mediante dataset, ofrecen una solución flexible para pasar datos sin romper la semántica del documento ni abusar de otros atributos.

Si se usan con criterio, pueden mejorar notablemente la organización y la interacción en proyectos web.

Comentarios

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *