Etiqueta ul en HTML: listas sin orden significativo
La etiqueta <ul> en HTML representa una lista cuyos elementos no tienen un orden significativo. Sirve para agrupar requisitos, materiales o características cuando cambiar su posición no cambia el sentido del conjunto. Usa un <li> para cada entrada; el navegador suele presentar estas listas con viñetas.
<ul>
<li>Editor de texto</li>
<li>Navegador</li>
</ul>
El resultado es una lista de dos requisitos, Editor de texto y Navegador, sin prioridad ni secuencia obligatoria. Intercambiarlos no cambia qué necesitas. Para probar el fragmento, colócalo en el <body> de un documento HTML; puedes utilizar el documento completo del ejemplo práctico y sustituir su lista por esta.
Sintaxis y contexto válido
Escribe la apertura <ul>, sus entradas y el cierre </ul>: ninguna de las dos etiquetas puede omitirse. Los ejemplos cierran también cada <li> para mostrar sus límites, aunque HTML permite omitir ese cierre en determinadas condiciones.
Puedes colocar <ul> donde se admite contenido de flujo, por ejemplo dentro de <body>, <section>, <div> o un <li>. No va dentro de un párrafo <p>. Sus hijos directos pueden ser cero o más elementos <li> y elementos de soporte de scripts, <script> o <template>. Estos últimos no cuentan como entradas. El texto de cada entrada pertenece a su <li>.
Un párrafo introductorio va antes de la lista; un párrafo que desarrolla una entrada puede ir dentro de su <li>. No pongas <p> ni otra lista como hijos directos de <ul>. El HTML Living Standard define este contexto y contenido permitido.
Lista no ordenada frente a ol
Piensa en la diferencia entre «materiales necesarios» y «pasos para construir». Los materiales pueden cambiar de posición sin alterar el conjunto: usa <ul>. En los pasos, pegar antes de cortar puede cambiar el resultado: usa <ol>.
La elección depende del significado. Una lista alfabética de materiales puede seguir siendo <ul>: el orden ayuda a localizar nombres, pero no establece pasos ni puestos. Las viñetas y los números son presentación; CSS puede cambiar los marcadores sin transformar un elemento en otro.
En el ejemplo mínimo, sustituir <ul> y </ul> por <ol> y </ol> produce habitualmente números y expresa orden. Retirar solo el contenedor deja los <li> sin un padre válido. Que el navegador conserve el texto o incluso dibuje marcadores no corrige ese error.
Ejemplo práctico: materiales con herramientas anidadas
Guarda este código como materiales.html con codificación UTF-8 y ábrelo en el navegador. Incluye todo el CSS necesario y funciona sin JavaScript, servidor ni otros archivos.
<!doctype html>
<html lang="es">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Materiales para una maqueta</title>
<style>
body {
font-family: sans-serif;
line-height: 1.5;
margin: 1rem;
}
.materiales {
list-style: square outside;
padding-inline-start: 1.5rem;
}
.materiales ul {
list-style: circle outside;
padding-inline-start: 1.5rem;
}
</style>
</head>
<body>
<h1>Materiales para una maqueta</h1>
<p>Reúne estos materiales; no hay que comprarlos en este orden.</p>
<ul class="materiales">
<li>Cartulina</li>
<li>
Herramientas
<ul>
<li>Tijeras</li>
<li>Regla</li>
</ul>
</li>
<li>Cinta adhesiva</li>
</ul>
</body>
</html>
- Comprueba las tres entradas principales: Cartulina, Herramientas y Cinta adhesiva, con marcadores cuadrados. Dentro de Herramientas aparecen Tijeras y Regla, con círculos huecos y una sangría adicional.
- Observa dónde se cierra el
<li>de Herramientas: después de la sublista. Así, los dos instrumentos pertenecen a esa entrada. Una sublista como hermana directa de los<li>sería incorrecta. - Cambia
squarepordiscen.materiales: verás puntos sólidos en el nivel exterior. La sublista conservacircleporque tiene su propia regla. El texto y las relaciones entre entradas permanecen iguales. - Retira el bloque
<style>: vuelve la presentación del navegador, pero continúan las dos listas y la pertenencia de las herramientas. Reduce la ventana y prueba también con JavaScript desactivado: no cambia el contenido.
El orden de lectura sigue el documento: Cartulina, Herramientas, Tijeras, Regla y Cinta adhesiva. «Sin orden significativo» no significa lectura aleatoria. Puedes reorganizar los materiales sin cambiar qué necesitas; conserva cada sublista junto a su categoría. Consulta la guía de <li> para ampliar las reglas de cada entrada.
Atributos y propiedades CSS
<ul> no tiene atributos específicos vigentes. En el ejemplo, class="materiales" es un atributo global que permite seleccionar la lista desde CSS. lang="es", también global, está en <html> y establece el idioma heredado del documento; no crea ni traduce la lista.
Los antiguos atributos type y compact de <ul> están obsoletos: utiliza CSS para su presentación. start y reversed pertenecen a <ol>, no a <ul>.
list-style es una propiedad CSS abreviada para el tipo, la posición y la imagen del marcador. En square outside, square elige la forma y outside coloca el marcador fuera del bloque de texto. Si solo quieres cambiar la forma, puedes usar list-style-type: square. No son atributos HTML ni instrucciones de JavaScript. La documentación de list-style explica también por qué las listas anidadas pueden tener estilos propios.
Accesibilidad al cambiar las viñetas
La estructura nativa permite reconocer una lista y sus entradas. <ul> tiene el rol implícito list y <li>, en este contexto, listitem. Las categorías se comunican mediante texto y anidación, además de sangría o forma del marcador. El anuncio exacto de niveles y cantidades depende del navegador y del lector de pantalla.
¿Ul siempre tiene viñetas? Es su apariencia habitual, pero list-style: none puede ocultarlas. El HTML sigue representando una lista; su exposición a las tecnologías de asistencia merece una comprobación aparte. ARIA en HTML advierte que algunos navegadores suprimen el rol implícito al quitar los marcadores. En ese caso concreto, role="list" puede recuperar su exposición; no hace falta añadirlo a las listas del ejemplo, que conservan marcadores.
En la comprobación local del 4 de octubre de 2026, Chromium 153 conservó los roles de ambas listas y sus cinco entradas al aplicar list-style: none a los dos niveles. Esto no garantiza el mismo resultado en otros navegadores ni un anuncio idéntico con lectores de pantalla. Si ocultas viñetas en tu proyecto, revisa el árbol accesible y prueba la lectura en las combinaciones que utilices.
Errores frecuentes y etiquetas relacionadas
¿Dónde va una lista anidada? Dentro del <li> al que pertenece, antes de su cierre, como Herramientas en el ejemplo. Añadir margen con CSS a una lista colocada fuera de ese <li> no crea la relación que falta.
No simules listas escribiendo símbolos y separando líneas con <br>: consigues texto con saltos, sin la estructura de lista. Tampoco uses <ul> solo para obtener sangría.
Si no aparecen viñetas, comprueba que las entradas sean <li> dentro de <ul> y revisa su CSS: list-style: none, una regla display sobre los <li> o un contenedor que recorta los marcadores pueden explicar el resultado.
<menu> ofrece una alternativa semántica para una lista de comandos, como botones de editar o copiar. Una lista de materiales corresponde a <ul>; una secuencia de pasos corresponde a <ol>. Ninguna de estas etiquetas crea por sí sola un menú interactivo con teclado.
Compatibilidad y fuentes
Compatibilidad consultada el 4 de octubre de 2026: MDN clasifica <ul> como ampliamente disponible. Los ejemplos usan HTML nativo y las formas básicas de marcadores CSS; no dependen de APIs ni de carga de recursos.
Para significado, sintaxis y restricciones, consulta la sección de <ul> del HTML Living Standard. MDN documenta sus atributos y ejemplos; ARIA en HTML describe su relación con los roles accesibles.