<ol>
Listas
Agrupa ítems donde el orden sí importa. El navegador los numera automáticamente; los atributos type, start y reversed controlan la numeración.
<ol> (ordered list, lista ordenada) es el elemento HTML que agrupa ítems donde cambiar el orden altera el significado. La “o” del nombre es la clave: el orden cuenta. Los casos de uso son inmediatos: los pasos de una receta (primero hervir, después colar, no al revés), las instrucciones de instalación de un software, un ranking (el puesto 1 es distinto al puesto 3), una secuencia de eventos históricos. Si reordenás los ítems y el contenido pierde sentido o se vuelve incorrecto, estás ante una <ol>.
La diferencia con <ul> no es visual — es semántica. Ambas pueden verse idénticas con CSS, pero el elemento elegido le comunica al lector de pantalla, al motor de búsqueda y a cualquier procesador del documento si la secuencia importa. Un lector de pantalla anuncia “lista de N ítems” para ambas, pero el número visible ya transmite orden. Usar <ol> para una lista de compras solo porque “querés números” es engañar al documento: el HTML declara que cambiar el orden cambia el significado, cuando no lo hace. La elección entre <ul> y <ol> es una decisión de contenido, no de estilo.
La numeración la genera el navegador automáticamente — no hace falta escribir “1.”, “2.”, etc. en el HTML. Eso implica que si insertás o eliminás un ítem, todos los números se recalculan solos. Los atributos start, type y reversed dan control sobre cómo se muestra esa numeración.
Cómo funciona
<ol> es un elemento de bloque que contiene <li> como hijos directos. El navegador los numera empezando en 1 (por defecto) y avanzando de uno en uno. La numeración se hace por CSS Counter internamente — el navegador mantiene un contador que se incrementa con cada <li>. Los atributos start, type y reversed modifican ese contador.
El estilo de la numeración (tamaño, color, posición, separación) se controla con CSS: list-style, list-style-type, counter-reset, counter-increment.
Modelo de contenido
El único hijo directo válido de <ol> es <li>. No se puede poner texto suelto ni otros elementos directamente dentro del <ol>. Las listas anidadas van dentro de un <li>. Display por defecto: block.
Sintaxis
<!-- Lista ordenada básica -->
<ol>
<li>Hervir el agua</li>
<li>Agregar la pasta</li>
<li>Colar y servir</li>
</ol>
<!-- Empezar desde un número distinto con start -->
<ol start="4">
<li>Colar la pasta</li>
<li>Agregar la salsa</li>
<li>Servir</li>
</ol>
<!-- Numeración en orden inverso con reversed -->
<ol reversed>
<li>Tercer lugar</li>
<li>Segundo lugar</li>
<li>Primer lugar</li>
</ol>
<!-- Numeración con letras mayúsculas con type -->
<ol type="A">
<li>Opción A</li>
<li>Opción B</li>
<li>Opción C</li>
</ol>
- Hervir el agua
- Agregar la pasta
- Colar y servir
Atributos
start
Fija el número de inicio de la lista. El valor es siempre un entero, sin importar el type elegido.
<!-- La lista empieza en 4 (útil para continuar una lista anterior) -->
<ol start="4">
<li>Paso cuatro</li>
<li>Paso cinco</li>
</ol>
- Paso cuatro
- Paso cinco
Caso de uso típico: dos bloques de código o dos fragmentos de prosa que son partes de una misma secuencia numerada; el segundo bloque usa start para continuar la numeración donde dejó el primero.
type
Cambia el sistema de numeración visible:
| Valor | Sistema | Ejemplo |
|---|---|---|
1 (default) | Números arábigos | 1, 2, 3… |
A | Letras mayúsculas | A, B, C… |
a | Letras minúsculas | a, b, c… |
I | Números romanos mayúsculos | I, II, III… |
i | Números romanos minúsculos | i, ii, iii… |
<ol type="I">
<li>Introducción</li>
<li>Desarrollo</li>
<li>Conclusión</li>
</ol>
- Introducción
- Desarrollo
- Conclusión
Nota: type en <ol> sigue vigente (a diferencia del type de <ul>, que es legacy). Sin embargo, para documentos que no dependen del tipo de numeración por su semántica, se prefiere controlarlo con CSS (list-style-type).
reversed
Atributo booleano que invierte la numeración: el último ítem recibe el número 1, el primero recibe N.
<!-- Rankings descendentes -->
<ol reversed>
<li>Tercer lugar</li>
<li>Segundo lugar</li>
<li>Primer lugar</li>
</ol>
- Tercer lugar
- Segundo lugar
- Primer lugar
Accesibilidad
El rol implícito de <ol> es list. Los lectores de pantalla anuncian la cantidad de ítems al entrar. Al igual que <ul>, aplicar list-style: none con CSS puede eliminar el rol list en Safari + VoiceOver; si quitás el estilo y necesitás que siga siendo una lista accesible, agregá role="list" explícitamente.
Cuándo usar <ol> vs. <ul>
La pregunta clave: ¿cambiar el orden cambia el significado o el resultado?
| Situación | Elemento |
|---|---|
| Pasos de una receta, instrucciones, tutorial | <ol> |
| Ranking (1er, 2do, 3er lugar) | <ol> |
| Secuencia histórica, cronología | <ol> |
| Lista de compras, características, opciones | <ul> |
| Menú de navegación | <ul> |
Notas, gotchas e interacción
typede<ol>vs.typede<ul>. En<ul>, el atributotypees legacy (usar CSS). En<ol>,typesigue siendo válido en HTML5 — pero igual se puede hacer con CSS para separar presentación de estructura.startacepta solo enteros, independientemente deltype. Si usástype="A"ystart="3", la lista empieza en “C”.- Listas que empiezan a mitad de una secuencia. Usá
startcuando un<ol>es la continuación de otro: sin él, cada lista reinicia en 1 aunque el contenido sea parte de la misma secuencia. - Texto o elementos sueltos como hijos directos son inválidos. Solo
<li.
Vigente / legacy
<ol> está completamente vigente. El atributo compact es legacy desde HTML5 (nunca tuvo implementación real en navegadores modernos). El atributo type en <ol> sigue vigente (caso diferente al type de <ul>).