2011-04-06 11 views
17

Quiero este código HTML ...¿Cómo puedo prefijar los números de los artículos de la lista con una cadena estática usando CSS?

<ol style="list-style:decimal;"> 
<li>Apples</li> 
<li>Oranges</li> 
</ol> 

... para hacer como esto

Q1. Manzanas
Q2. Naranjas

En otras palabras, quiero que los números generados automáticamente sean prefijados con la cadena estática "Q".

He intentado CSS como esto:

ol li:before 
{ 
    content:"Q"; 
} 

Pero que produce esto:

  1. QApples
  2. QOranges

También he intentado usar "lista- estilo: numerado adentro; ", pero eso simplemente cambia la lista a la derecha con los mismos resultados. No puedo encontrar una manera de hacer referencia a los elementos numéricos autogenerados de ninguna manera para agregarles información de estilo CSS. Parece un escenario tan simple y común, pero no encuentro ninguna forma de lograrlo con CSS sencillo (sin contadores de CSS, JavaScript, etc.).

+0

Numerosas preguntas de manipulación de numeración de listas hoy. Esta mañana cerré uno como duplicado de otro que respondí. – BoltClock

Respuesta

34

La única manera es puro CSS con counters:

ol { 
    counter-reset: item; 
    list-style-type: decimal; 
} 

ol li:before { 
    content: 'Q' counter(item, decimal) '. '; 
    counter-increment: item; 
} 

No se puede lograr esto, además de utilizar los contadores de CSS o JavaScript (que fueron diseñados específicamente para este tipo de casos de uso!).

Por cierto, it's decimal, not numbered.

+0

+1, única forma, aunque él específicamente le pide que no use el contador CSS. –

+0

Gracias, esto es probablemente lo que estoy buscando y es relativamente simple. No estoy necesariamente en contra de usar el contador, si es así de simple. Mi única reserva es ... ¿cómo es el soporte del navegador para esto? – Triynko

+0

@Gaby: Vaya, me lo perdí. Gracias por el voto positivo sin embargo. @Triynko: Bueno, es cierto que el soporte de IE es bastante pobre ... puedes probarlo aquí http://jsfiddle.net/BoltClock/9VdB3 – BoltClock

2

Hay una, frágil método, no de venta libre, pero es propenso a romperse:

ol { 
    list-style-type: decimal; 
    margin: 0 0 0 2em; 
} 

li { 
    position: relative; 
} 

ol li:first-letter { 
    color: #f90; 
    float: left; 
    position: relative; 
    margin-left: -2em; 
} 

JS Fiddle demo.

+0

Sí, estoy tratando de evitar soluciones inestables/complejas/no bien respaldadas. La solución de contador es estable/simple/bien respaldada. La fragilidad de este ejemplo radica en que requiere que el prefijo de número de lista sea de un tamaño particular (aunque el uso de una unidad relativa como EM en lugar de PX probablemente ayude a aislarlo de los cambios de tamaño de fuente). Había pensado en una solución similar usando li: before {content}, pero el uso de desplazamientos codificados no admitirá cadenas de prefijos de longitud variable. ¡Más 1 para implementarlo de todos modos! – Triynko

Cuestiones relacionadas