Elementos HTML · @luz-ds/core
Elementos HTML
Cómo aplica LUZ estilos a cada uno de los 116 elementos HTML actuales, agrupados en 14 categorías, con un ejemplo en vivo y el marcado que puedes copiar.
La lista sigue la referencia de MDN. Se excluyen deliberadamente los elementos obsoletos: aquí tienes alternativas.
La mayoría de los elementos tienen estilo sin clase. Mira cuáles, y cuáles quedan en tus manos, y cómo cambiar los estilos por defecto.
Cómo leer una ficha
- Ejemplo en vivo. El elemento real, con los estilos de LUZ. Cambia el modo de color en el pie de página para comprobarlo en los tres modos.
- Marcado. El código exacto del ejemplo. El botón para copiar copia lo que ves.
- Nota de LUZ. Indica si el elemento tiene estilo sin clase, si se deja al navegador o si no tiene estilo porque solo agrupa contenido. Cuando una clase añade algo, la nota dice qué.
Las reglas que dan estilo a elementos sin clase tienen especificidad cero: cualquier clase .luz-* o regla propia prevalece.
Qué elementos tienen estilo sin clase
Escribe el HTML y LUZ le da estilo, sin ponerle ninguna clase. La estructura es la excepción: la maquetación de la página es tuya.
| Grupo | Elementos |
|---|---|
| Texto | h1 a h6, p, ul, ol, menu, li, dl, dt, dd, blockquote, pre, hr, figure, figcaption, address. Tipografía, color y el espacio entre bloques. |
| Texto en línea | a, abbr, b, strong, code, kbd, samp, var, mark, small, sub, sup, time, dfn, s, u, del, ins, rt. |
| Controles | button, input, textarea, select, label, fieldset, legend, output, meter, progress. Los campos de archivo y de color conservan el aspecto del navegador; .luz-input les da estilo. |
| Tablas | table, caption, tr, th, td. Al ancho completo del contenedor. |
| Desplegables y diálogos | details, summary, dialog. |
| Imágenes y medios | img, picture, video, audio, canvas, svg, iframe, embed, object. |
| La página | html, body. body fija la tipografía, el color y el fondo de la página. No tiene maquetación: ni contenedor ni centrado. |
| Grupo | Elementos |
|---|---|
| Estructura | div, span, section, article, aside, header, footer, main, search, form, nav, hgroup, col, colgroup. Solo agrupan contenido. Maquétalos con los objetos o-*, como .o-stack y .o-grid, o con tu propio CSS. |
| El aspecto del navegador | option, optgroup, datalist, em, i, cite, q, br, wbr, bdi, bdo, ruby, rp, data, map, area, slot, source, math, thead, tbody, tfoot. LUZ los deja como los dibuja el navegador. thead, tbody y tfoot solo agrupan filas: las filas y las celdas llevan el aspecto de la tabla. |
| No se muestran | head, title, meta, link, style, base, script, noscript, template, selectedcontent, geolocation. Llevan información para el navegador, no para quien lee. |
El único elemento que falta, track, recibe estilo del reproductor de vídeo y necesita su clase.
El HTML dice la variante
No hace falta una clase para distinguir un aspecto de otro cuando el HTML ya lo dice:
- Un
buttonsintype, o contype="submit", es la acción principal.type="button"ytype="reset"son la secundaria. aria-invalid="true"marca un campo con un error.disabledmarca un control que no se puede usar.aria-current="page"marca el enlace de la página en la que estás.
Una clase añade lo que el HTML no puede decir: un enlace con aspecto de botón, los papeles de peligro y fantasma, los tamaños y las partes que necesitan su propio marcado. La ficha de cada elemento dice qué añade su clase. Un elemento con una clase luz-* toma el aspecto de su componente.
Todos los elementos, de la A a la Z
Cada elemento, su categoría y cómo le aplica estilos LUZ. Selecciona un nombre para abrir su ficha.
| Elemento | Categoría | Estilo de LUZ | En esta página |
|---|---|---|---|
a | Texto en línea | elements/inline.css | Ejemplo en vivo |
abbr | Texto en línea | elements/inline.css | Ejemplo en vivo |
address | Estructura de página | elements/sections.css | Ejemplo en vivo |
area | Imágenes y medios | Aspecto nativo | Ejemplo en vivo |
article | Estructura de página | Aspecto nativo | Ejemplo en vivo |
aside | Estructura de página | Aspecto nativo | Ejemplo en vivo |
audio | Imágenes y medios | elements/media.css | Ejemplo en vivo |
b | Texto en línea | elements/inline.css | Ejemplo en vivo |
base | Metadatos de página | Aspecto nativo | Solo marcado |
bdi | Texto en línea | Aspecto nativo | Ejemplo en vivo |
bdo | Texto en línea | Aspecto nativo | Ejemplo en vivo |
blockquote | Bloques de texto | elements/text.css | Ejemplo en vivo |
body | Raíz del documento | elements/document.css | Solo marcado |
br | Texto en línea | Aspecto nativo | Ejemplo en vivo |
button | Formularios | elements/forms.css | Ejemplo en vivo |
canvas | Script y canvas | elements/media.css | Ejemplo en vivo |
caption | Tablas | elements/tables.css | Ejemplo en vivo |
cite | Texto en línea | Aspecto nativo | Ejemplo en vivo |
code | Texto en línea | elements/inline.css | Ejemplo en vivo |
col | Tablas | Aspecto nativo | Ejemplo en vivo |
colgroup | Tablas | Aspecto nativo | Ejemplo en vivo |
data | Texto en línea | Aspecto nativo | Ejemplo en vivo |
datalist | Formularios | Aspecto nativo | Ejemplo en vivo |
dd | Bloques de texto | elements/text.css | Ejemplo en vivo |
del | Ediciones registradas | elements/inline.css | Ejemplo en vivo |
details | Widgets integrados | elements/interactive.css | Ejemplo en vivo |
dfn | Texto en línea | elements/inline.css | Ejemplo en vivo |
dialog | Widgets integrados | elements/interactive.css | Ejemplo en vivo |
div | Bloques de texto | Aspecto nativo | Ejemplo en vivo |
dl | Bloques de texto | elements/text.css | Ejemplo en vivo |
dt | Bloques de texto | elements/text.css | Ejemplo en vivo |
em | Texto en línea | Aspecto nativo | Ejemplo en vivo |
embed | Marcos e incrustaciones | elements/media.css | Ejemplo en vivo |
fieldset | Formularios | elements/forms.css | Ejemplo en vivo |
figcaption | Bloques de texto | elements/text.css | Ejemplo en vivo |
figure | Bloques de texto | elements/text.css | Ejemplo en vivo |
footer | Estructura de página | Aspecto nativo | Ejemplo en vivo |
form | Formularios | Aspecto nativo | Ejemplo en vivo |
geolocation | Widgets integrados | Aspecto nativo | Solo marcado Experimental |
h1 | Estructura de página | elements/sections.css | Ejemplo en vivo |
h2 | Estructura de página | elements/sections.css | Ejemplo en vivo |
h3 | Estructura de página | elements/sections.css | Ejemplo en vivo |
h4 | Estructura de página | elements/sections.css | Ejemplo en vivo |
h5 | Estructura de página | elements/sections.css | Ejemplo en vivo |
h6 | Estructura de página | elements/sections.css | Ejemplo en vivo |
head | Metadatos de página | Aspecto nativo | Solo marcado |
header | Estructura de página | Aspecto nativo | Ejemplo en vivo |
hgroup | Estructura de página | Aspecto nativo | Ejemplo en vivo |
hr | Bloques de texto | elements/text.css | Ejemplo en vivo |
html | Raíz del documento | elements/document.css | Solo marcado |
i | Texto en línea | Aspecto nativo | Ejemplo en vivo |
iframe | Marcos e incrustaciones | elements/media.css | Ejemplo en vivo |
img | Imágenes y medios | elements/media.css | Ejemplo en vivo |
input | Formularios | elements/forms.css | Ejemplo en vivo |
ins | Ediciones registradas | elements/inline.css | Ejemplo en vivo |
kbd | Texto en línea | elements/inline.css | Ejemplo en vivo |
label | Formularios | elements/forms.css | Ejemplo en vivo |
legend | Formularios | elements/forms.css | Ejemplo en vivo |
li | Bloques de texto | elements/text.css | Ejemplo en vivo |
link | Metadatos de página | Aspecto nativo | Solo marcado |
main | Estructura de página | Aspecto nativo | Solo marcado |
map | Imágenes y medios | Aspecto nativo | Ejemplo en vivo |
mark | Texto en línea | elements/inline.css | Ejemplo en vivo |
math | SVG y MathML | Aspecto nativo | Ejemplo en vivo |
menu | Bloques de texto | elements/text.css | Ejemplo en vivo |
meta | Metadatos de página | Aspecto nativo | Solo marcado |
meter | Formularios | elements/forms.css | Ejemplo en vivo |
nav | Estructura de página | Aspecto nativo | Ejemplo en vivo |
noscript | Script y canvas | Aspecto nativo | Solo marcado |
object | Marcos e incrustaciones | elements/media.css | Ejemplo en vivo |
ol | Bloques de texto | elements/text.css | Ejemplo en vivo |
optgroup | Formularios | Aspecto nativo | Ejemplo en vivo |
option | Formularios | Aspecto nativo | Ejemplo en vivo |
output | Formularios | elements/forms.css | Ejemplo en vivo |
p | Bloques de texto | elements/text.css | Ejemplo en vivo |
picture | Marcos e incrustaciones | elements/media.css | Ejemplo en vivo |
pre | Bloques de texto | elements/text.css | Ejemplo en vivo |
progress | Formularios | elements/forms.css | Ejemplo en vivo |
q | Texto en línea | Aspecto nativo | Ejemplo en vivo |
rp | Texto en línea | Aspecto nativo | Ejemplo en vivo |
rt | Texto en línea | elements/inline.css | Ejemplo en vivo |
ruby | Texto en línea | Aspecto nativo | Ejemplo en vivo |
s | Texto en línea | elements/inline.css | Ejemplo en vivo |
samp | Texto en línea | elements/inline.css | Ejemplo en vivo |
script | Script y canvas | Aspecto nativo | Solo marcado |
search | Estructura de página | Aspecto nativo | Ejemplo en vivo |
section | Estructura de página | Aspecto nativo | Ejemplo en vivo |
select | Formularios | elements/forms.css | Ejemplo en vivo |
selectedcontent | Formularios | Aspecto nativo | Solo marcado Experimental |
slot | Web Components | Aspecto nativo | Ejemplo en vivo |
small | Texto en línea | elements/inline.css | Ejemplo en vivo |
source | Marcos e incrustaciones | Aspecto nativo | Ejemplo en vivo |
span | Texto en línea | Aspecto nativo | Ejemplo en vivo |
strong | Texto en línea | elements/inline.css | Ejemplo en vivo |
style | Metadatos de página | Aspecto nativo | Solo marcado |
sub | Texto en línea | elements/inline.css | Ejemplo en vivo |
summary | Widgets integrados | elements/interactive.css | Ejemplo en vivo |
sup | Texto en línea | elements/inline.css | Ejemplo en vivo |
svg | SVG y MathML | elements/media.css | Ejemplo en vivo |
table | Tablas | elements/tables.css | Ejemplo en vivo |
tbody | Tablas | Aspecto nativo | Ejemplo en vivo |
td | Tablas | elements/tables.css | Ejemplo en vivo |
template | Web Components | Aspecto nativo | Ejemplo en vivo |
textarea | Formularios | elements/forms.css | Ejemplo en vivo |
tfoot | Tablas | Aspecto nativo | Ejemplo en vivo |
th | Tablas | elements/tables.css | Ejemplo en vivo |
thead | Tablas | Aspecto nativo | Ejemplo en vivo |
time | Texto en línea | elements/inline.css | Ejemplo en vivo |
title | Metadatos de página | Aspecto nativo | Solo marcado |
tr | Tablas | elements/tables.css | Ejemplo en vivo |
track | Imágenes y medios | components/player.css (clase) | Ejemplo en vivo |
u | Texto en línea | elements/inline.css | Ejemplo en vivo |
ul | Bloques de texto | elements/text.css | Ejemplo en vivo |
var | Texto en línea | elements/inline.css | Ejemplo en vivo |
video | Imágenes y medios | elements/media.css | Ejemplo en vivo |
wbr | Texto en línea | Aspecto nativo | Ejemplo en vivo |
Elementos obsoletos y qué usar en su lugar
Los 23 elementos siguientes se excluyen deliberadamente de la referencia: están obsoletos o se han eliminado, y LUZ no aplica estilos a ninguno. Usa la alternativa indicada.
| Elemento | Usa en su lugar | Motivo | Fuente |
|---|---|---|---|
acronym |
abbr |
La misma función con el nombre que sigue vigente. |
|
big |
CSS: font-size, o strong o em cuando aporten énfasis |
El tamaño es una cuestión de presentación. |
|
center |
CSS: text-align: center para texto, margin-inline: auto para un bloque |
La alineación es una cuestión de presentación. |
|
content |
slot, de Shadow DOM versión 1 |
Formaba parte de la primera versión de Shadow DOM, que los navegadores eliminaron. |
|
dir |
ul |
Una lista de archivos es una lista. |
|
fencedframe |
iframe |
Un experimento obsoleto de Privacy Sandbox. |
|
font |
CSS: font-family, font-size y color |
Las fuentes y los colores son cuestiones de presentación. |
|
frame |
iframe y CSS, o inclusiones del lado del servidor |
Los marcos dividen una ventana en documentos; una maquetación lo hace con CSS. |
|
frameset |
iframe y CSS, o inclusiones del lado del servidor |
Como con frame. |
|
image |
img |
Nunca formó parte de un estándar: los navegadores solo lo mantuvieron por compatibilidad con páginas antiguas. |
|
marquee |
Animación CSS que respete prefers-reduced-motion |
El texto en movimiento que no se puede pausar incumple WCAG 2.2.2. |
|
menuitem |
Un script en el evento contextmenu o un popover con botones |
El marcado del menú contextual nunca llegó a implementarse de forma generalizada y se eliminó. |
|
nobr |
CSS: white-space: nowrap |
El salto de línea es una cuestión de presentación. |
|
noembed |
object en lugar de embed, con contenido alternativo dentro |
embed no tiene contenido alternativo propio. |
|
noframes |
iframe y CSS, o inclusiones del lado del servidor |
Como con frame. |
|
param |
El atributo data de object, que establece la URL del recurso |
Parámetros de un plug-in que ningún navegador ejecuta. |
|
plaintext |
El tipo text/plain de la respuesta |
No se podía cerrar: el resto de la página se convertía en texto. |
|
rb |
El texto base directamente dentro de ruby |
El texto base de ruby no necesita un contenedor. |
|
rtc |
Elementos ruby anidados |
Como con rb. |
|
shadow |
slot, de Shadow DOM versión 1 |
Formaba parte de la primera versión de Shadow DOM, que los navegadores eliminaron. |
|
strike |
del para una edición, s para texto que ya no es aplicable |
El elemento indica qué significa el texto, no cómo se representa. |
|
tt |
code, kbd, samp o var, según su significado, o CSS font-family: monospace |
La anchura fija es una cuestión de presentación. |
|
xmp |
pre con code, escapando < y & |
No podía contener su propia etiqueta de cierre. |
Cambiar los estilos por defecto
Toda regla que da estilo a un elemento sin clase tiene especificidad cero, así que la tuya gana sin pelea.
- Cambia los tokens. Es la forma de cambiar el aspecto de todo el sitio: colores, tipografía, espacio y radio. Copia
themes/_template.cssy cambia los valores. Hazlo tuyo explica cómo. - Escribe tu propio CSS. El CSS sin capa gana a todas las capas de LUZ. No necesitas
!importantni un selector más largo. Lo que no tocas se queda: si solo cambias el color de unh1, conserva el tamaño que le da LUZ. - Usa LUZ en una región de una página que ya tiene diseño. Carga
luz.conditional.cssen lugar deluz.cssy pondata-luzen el elemento que contiene la región. El reset y los elementos sin clase se aplican solo dentro de ella. ¿Qué nivel necesito? dice cuándo elegirla.
/* Your CSS has no layer, so it beats every layer of LUZ. */
h1 {
font-weight: 600;
}
button {
border-radius: 0;
}
Los tokens, tu CSS y la región funcionan juntos: los tokens cambian lo que dibuja LUZ, tu CSS tiene la última palabra y la región limita dónde dibuja LUZ.
Elementos base
elements/*.css
generic/_reset.css
Los encabezados usan ET Book
Los párrafos usan la fuente sans del sistema y los enlaces usan el color de marca.
Un elemento de revelado nativo
El elemento details no necesita JavaScript.
Usa mark para resaltar y Ctrl K para las teclas.
Publicado el .
Un figure sin clase es una superficie con relleno.
Todos los elementos HTML actuales, con un ejemplo en vivo, están en la referencia de elementos HTML.
El restablecimiento aplica el modelo de caja border-box, elimina los márgenes predeterminados, afina las barras de desplazamiento y reduce el movimiento cuando se solicita.