Menu

Atributos HTML: sintaxis, class, id, data-* y booleanos

Los atributos añaden información a un elemento HTML: a dónde va un enlace, qué muestra una imagen, qué clase de CSS se aplica. Aprende la sintaxis, los atributos globales que acepta todo elemento, class e id, los atributos booleanos y los atributos data-*.

Esta página incluye editores ejecutables: edita, ejecuta y ve el resultado al instante.

Qué son los atributos HTML

Un atributo añade información a un elemento. Va dentro de la etiqueta de apertura, escrito como un nombre, un signo igual y un valor entre comillas: name="value". Un elemento puede tener cualquier cantidad de atributos, separados por espacios.

href le dice al enlace a dónde ir, src y alt describen la imagen, type, placeholder y required configuran el campo. Cada elemento tiene su propio conjunto de atributos, y unos pocos (los atributos globales de más abajo) funcionan en todos los elementos.

Reglas de sintaxis

<input type="text" name="city" value="Paris" disabled>
  • Nombre, signo igual, valor entre comillas. Las comillas dobles son la convención; las simples también funcionan (title='Say "hi"' es la forma de meter una comilla doble dentro de un valor).
  • Los nombres no distinguen mayúsculas de minúsculas. CLASS y class son el mismo atributo. Los valores sí: class="Box" y class="box" son clases distintas.
  • Las comillas son opcionales sin espacios, pero ponlas igual. class=big box le da al elemento la clase big y un segundo atributo sin sentido llamado box.
  • El orden no importa. <img alt="" src="a.png"> es lo mismo que <img src="a.png" alt="">.
  • Cada nombre una sola vez por elemento. Si un atributo aparece dos veces, el navegador se queda con el primero y descarta el segundo sin avisar.

Atributos booleanos

Algunos atributos están activados o desactivados. En estos, la presencia significa verdadero y el valor se ignora. disabled, checked, required, readonly, hidden, multiple, autofocus y open funcionan así.

El tercer botón está deshabilitado aunque el valor diga false, porque el navegador solo comprueba si el atributo está. Para desactivar un atributo booleano, quítalo. En JavaScript, button.disabled = false hace justo eso.

El atributo class

class le da a un elemento uno o más nombres que el CSS y el JavaScript usan para encontrarlo. Varios elementos pueden compartir una clase, y un elemento puede tener varias clases, separadas por espacios:

Cada clase extra añade sus reglas encima. En CSS una clase se selecciona con un punto (.card); en JavaScript, element.classList.add('featured') y classList.remove las cambian. Las clases son la forma normal de dar estilo: la mayor parte de tu CSS apuntará a clases.

El atributo id

id le da a un elemento un nombre que debe ser único en la página. Úsalo cuando necesites exactamente un elemento: el destino de un enlace, un <label for> o document.getElementById.

Al hacer clic en la etiqueta, el foco pasa al campo, porque for="email" apunta a id="email". El enlace se desplaza a #pricing porque el fragmento del href coincide con el id.

classid
Cuántos elementos pueden compartirloCualquier númeroUno (único)
Valores por elementoVarios, separados por espaciosUno
Selector CSS.name#name
Uso típicoDar estilo a grupos de elementosDestinos de enlaces, etiquetas, un elemento concreto en JavaScript

Un id no puede contener espacios. Empiézalo con una letra para que sea fácil de usar en CSS: #2col no es un selector CSS válido sin escaparlo.

Atributos globales

Estos atributos funcionan en cualquier elemento:

AtributoQué hace
idNombre único del elemento
classLista de nombres de clase separados por espacios
styleCSS en línea, como style="color: red"
titleTexto de ayuda que aparece al pasar el ratón
langIdioma del contenido, como lang="fr"
dirDirección del texto: ltr, rtl o auto
hiddenOculta el elemento (booleano)
tabindexHace que un elemento reciba el foco con Tab, o fija su orden
contenteditablePermite al usuario editar el texto del elemento
data-*Tus propios datos, que se leen con JavaScript

El atributo lang tiene su propia página porque afecta a los lectores de pantalla, la traducción y la búsqueda.

Atributos data-*

Cuando necesites guardar un valor propio en un elemento, pon el prefijo data- al nombre. Después del prefijo vale cualquier nombre, y JavaScript lee los valores con element.dataset, con los guiones convertidos a camelCase:

data-product-id se convierte en dataset.productId. Los valores siempre vuelven como texto, así que conviértelos con Number() antes de hacer cálculos. El CSS también puede seleccionarlos: [data-price="4.50"].

Errores comunes

  • Escribir class dos veces. <div class="a" class="b"> solo conserva a. Pon las dos en un atributo: class="a b".
  • Repetir un id. Dos elementos con el mismo id rompen los enlaces #, las etiquetas y getElementById, que solo devuelve el primero. Usa una clase para todo lo que se repita.
  • disabled="false" o checked="false". El atributo sigue presente, así que sigue activo. Quítalo en su lugar.
  • Valores sin comillas con espacios. alt=My photo asigna a alt el valor My. Pon comillas a todos los valores.
  • Inventar atributos sin data-. <div price="4"> es HTML no válido y puede chocar con un futuro atributo estándar. Usa data-price.

Preguntas frecuentes

¿Qué es un atributo HTML?

Un atributo es información extra escrita dentro de una etiqueta de apertura como name="value". Configura el elemento: href indica a dónde va un enlace, src y alt describen una imagen, class e id permiten que el CSS y el JavaScript encuentren el elemento.

¿Qué diferencia hay entre class e id en HTML?

Un id debe ser único en la página e identifica un solo elemento, para enlaces #fragment, <label for> y getElementById. Una class la pueden compartir muchos elementos, y un elemento puede tener varias clases separadas por espacios. Usa clases para dar estilo.

¿Cómo pongo varias clases a un elemento HTML?

Ponlas en un solo atributo class separadas por espacios: <div class="card featured dark">. Escribir class dos veces no funciona: el navegador solo se queda con el primero.

¿Los atributos HTML necesitan comillas?

Las comillas son opcionales cuando el valor no tiene espacios ni caracteres especiales, pero ponerlas siempre es el hábito seguro. class=big box le da al elemento la clase big más un atributo aparte llamado box.

¿Por qué mi botón sigue deshabilitado con disabled="false"?

disabled es un atributo booleano: su presencia significa verdadero, diga lo que diga el valor. Para habilitar el elemento, quita el atributo, o asigna button.disabled = false en JavaScript, que lo elimina.

¿Puedo inventar mis propios atributos HTML?

Usa el prefijo data-: data-price="12" o data-user-id="7" son válidos en cualquier elemento y se leen en JavaScript con element.dataset. Los nombres inventados sin el prefijo son HTML no válido.

Coddy programming languages illustration

Aprende a programar con Coddy

COMENZAR