Numeración con estilo | Programar Plus

Lo más probable es que, si desea numerar las cosas en orden en un sitio web, la lista ordenada (<ol>) es tu chico. También es bastante razonable que quieras diseñar esos números. Curiosamente, diseñar esos números de lista no es algo muy fácil en CSS. Afortunadamente, tampoco es imposible. Roger Johansson tiene un tutorial que muestra cómo se puede hacer con el :before pseudo elemento, que puede tener un counter como un valor para el content propiedad.

Pero que se sepa, la aplicación de contadores numerados no se limita a listas ordenadas. Por ejemplo, digamos que desea numerar los pares de preguntas y respuestas de una lista de preguntas frecuentes.

Tendrías un marcado como este:

<dl class="faq">

	<dt>How much wood would a wood chuck chuck if a wood chuck could chuck wood?</dt>
	<dd>1,000,000</dd>
	
	<dt>What is the air-speed velocity of an unladen swallow?</dt>
	<dd>What do you mean? An African or European swallow?</dd>
	
	<dt>Why did the chicken cross the road?</dt>
	<dd>To get to the other side</dd>
	
</dl>

Cada nuevo <dt> elemento es una nueva pregunta, por lo tanto, dónde deberíamos aplicar la numeración. Es tan simple como esto:

.faq {
	counter-reset: my-badass-counter;
}
.faq dt:before {
	content: counter(my-badass-counter);
	counter-increment: my-badass-counter;
}

Estilo el :before elemento como quieras. Por ejemplo:

Ver demostración

Solo quería que se dieran cuenta de esta habilidad. Empiezas a pensar en todo tipo de cosas para numerar una vez que lo entiendes. Por ejemplo, recientemente publiqué en un blog una de mis recetas favoritas y numeré cada paso / foto con números romanos en bloque.Lo que me recuerda: los números no tienen por qué ser decimales. Pueden ser cualquier cosa que list-style-type puede ser. A saber:

Dto (• • •)
círculo (○ ○ ​​○)
cuadrado (▪ ▪ ▪)
decimal (1 2 3)
cero inicial decimal (01, 02, 03)
inferior-romano (i ii iii)
alto-romano (I II III)
griego inferior (α β γ)
latín inferior (abc)
latín alto (ABC)
armenio
georgiano
alfa inferior (abc)
alfa superior (ABC)

Todo lo que necesita hacer es especificar cuál en el valor del contador:

content: counter(my-counter, lower-roman);

El futuro

Lo anterior es genial y está en el campo Use-It-Today ™. Pero casi se siente hack cuando miras el salto adelante que están dando las listas CSS3. Una vez que aparezca el soporte del navegador para eso, podremos hacer cosas como apuntar al marcador de la lista a voluntad:

/* 
  Examples from THE FUTURE
  No browser support at the time of this writing 
*/

li::marker { 
  width: 30px;
  text-align: right;
  margin-right: 10px;
  display: inline-block;
}

ol { 
  list-style: symbols("*" "2020" "2021" "A7"); 
}

ul { 
  list-style-type: "★"; 
}