2011-11-18 27 views
5

que necesito para poner en práctica el estilo siguiente lista:¿Puedo obtener el valor de contador CSS del padre?

 
01 Item 1 
02 Item 2 
    02a Item 2a 
    02b Item 2b 
03 Item 3 

¿Cómo puedo obtener el valor del contador de la matriz a utilizar en el contenido de mi artículo :before sub? (02 en mi ejemplo anterior)

Respuesta

8

Utiliza dos contadores diferentes: uno para los padres li y uno para los subelementos li. Luego, en cada li subtema, concatenar múltiples counter() funciones utilizando cada contador, como este:

ol { 
    counter-reset: item; 
} 

ol ol { 
    counter-reset: subitem; 
} 

li { 
    display: block; 
} 

/* First level of parent items */ 
li:before { 
    content: counter(item, decimal-leading-zero) ' '; 
    counter-increment: item; 
} 

/* Second level of subitems */ 
li li:before { 
    /* counter(item) for the parents, counter(subitem) for the subitems */ 
    content: counter(item, decimal-leading-zero) counter(subitem, lower-alpha) ' '; 
    counter-increment: subitem; 
} 

jsFiddle demo, probado en todos los navegadores que soportan :before y CSS2.1 contadores incluyendo IE8 +

lectura útil: W3C CSS2.1 generated content spec, §12.4.1 Nested counters and scope

+0

+1 por 'contador-incremento' pero viene' 01a 02b' no '02a 02b' – diEcho

+0

@diEcho: ¡Solucionado! Gracias de nuevo por señalar el error antes :) – BoltClock

+0

Awesome! Puede aplicar cualquier tipo de estilo de lista a un contador para que pueda usar "decimal-leading-zero". Gracias por la ayuda. – Colin

-1

No, CSS no admite tales cosas "variables". Todo lo que puede hacer es establecer el mismo estilo que el elemento primario.

+1

Err, no las especificaciones CSS 2.1 para contadores son fuertes. Mi pregunta era realmente acerca de cómo obtener múltiples instancias de contadores. Hay una función de contador() y de contador(). counters() devuelve el árbol de conteo completo pero no puede formatear individualmente el tipo de estilo de lista de cada rama del árbol. Iba por el camino equivocado con contadores() antes de hacer mi pregunta. – Colin

0

Ver this: no hay manera de hacer tales cosas en CSS, obviamente, necesitaría usar JavaScript para ello, pero los pseudo-elementos no están en el afaik DOM. En cuanto a las otras respuestas: quiere el valor del contador que aparece antes de los elementos de la lista.

+0

No puede obtener el valor de un contador de CSS a través de JavaScript, pero aún puede acceder a él mediante CSS. Los contadores son una pequeña cosa compleja, pero mira mi respuesta de cómo. – BoltClock

+0

Supongo que entendí mal la pregunta, ya que pensé que quería poder leer el valor del contador (de ahí la necesidad de JavaScript). El "obtener" en la pregunta me confundió (pero para ser justos, está etiquetado solo para CSS). – Viruzzo

Cuestiones relacionadas