Ver Mensaje Individual
  #6 (permalink)  
Antiguo 21/09/2010, 10:17
kseso?
Colaborador
 
Fecha de Ingreso: junio-2007
Mensajes: 5.798
Antigüedad: 16 años, 10 meses
Puntos: 539
Respuesta: counter y div

Está inicializando (comenzando la cuenta) dos veces: una al cargar el /body/ y otra cada vez que aparece un /ol/ con clase /reset/. Línea 5 de su css.
Por eso su contador vuelve a comenzar y marcar /1/ en el primer /ol.reset/ que aparece, en vez de continuar.

Por otro lado, usted pretende tener dos contadores distintos e incrementar cada uno de ellos a medida que aparecen en el html. Por lo tanto, debe iniciar los dos una sola vez.
Ese inicio se debe hacer no en la lista numerada (para que no se resetee cada vez que aparezca), sino en un ancestro común a todas ellas.
Por lo tanto, si dichas listan van a estar en distintos contenedores y a distintos niveles de profundidad, lo suyo es inicializarlas en el /body/ y para evitar que un /counter-reset/ anule a otro, hacerlo de forma conjunta:
Código CSS:
Ver original
  1. body{
  2. counter-reset: cnt rojo;
  3. padding: 2em;/*no influye, sólo estética visual*/
  4. }
Ahí iniciamos los dos contadores, el de su código /cnt/ y el segundo que llamo /rojo/

El siguiente paso, es identificar qué elementos incrementarán un contador y cuál el otro:
Código CSS:
Ver original
  1. /*el contador que usted ya ha creado y llama /cnt/*/
  2. ol.reset li:before {
  3. content: "(Azul" counter(cnt) ")"; /*Contenido del contador, además de su numeración*/
  4. counter-increment: cnt; /*el contador al que afecta: cnt*/
  5. color: blue; /*esta y la siguiente sólo a efectos visuales*/
  6. font-style: italic;
  7. }
  8. /*el segundo que necesitamos para llevar doble contabilidad que llamo /otra/ y el segundo contador llamado /rojo/*/
  9. ol.otra li:before {
  10. content: "(Rojo" counter(rojo) ")";
  11. counter-increment: rojo;
  12. color: red;
  13. font-family: monospace;
  14. }
Como se ve en el css, cada /li/ incluido en una lista de definición con clase /.reset/ incrementará (sin reiniciar) el contador /cnt/
Los mismo para los de clase /.otra/ en el contador /rojo/

Lo siguiente es actuar en el html, aplicando una de las dos clases que afectan a los contadores css: /.reset u .otra/ en aquellas listas de numeración que necesitemos para incrementar una u otra numeración.

Unos pocos estilos más para diferenciar visualmente las dos numeraciones y nos quedaría algo como el siguiente código:
Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml" lang="es-es">
  3. <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
  4. <title>Kseso? Jugando con css</title>
  5. <style type="text/css">
  6.  * {
  7.     margin: 0;
  8.     padding: 0;
  9.     border: 0;
  10.     outline: 0;
  11.   }
  12. body{
  13. counter-reset: cnt rojo;
  14. padding: 2em;
  15. }
  16.  
  17. ol, ul {
  18. list-style-type:none;
  19. }
  20.  
  21. ol.otra li:before {
  22. content: "(Rojo" counter(rojo) ")";
  23. counter-increment: rojo;
  24. color: red;
  25. font-family: monospace;
  26. }
  27. ol.reset li:before {
  28. content: "(Azul" counter(cnt) ")";
  29. counter-increment: cnt;
  30. color: blue;
  31. font-style: italic;
  32. }
  33. ol li:before {display: inline-block; width: 100px;}
  34. del {font-size: .7em;}
  35. </head>
  36. <div>
  37.             <ol class="otra">
  38.                 <li>Numeración: 1 - Obtenido: 1 </li>
  39.                 <li>Numeración: 2 - Obtenido: 2 </li>
  40.             </ol>
  41.  
  42.             <ol class="otra">
  43.                 <li>Numeración: 3 - Obtenido: 3 </li>
  44.                 <li>Numeración: 4 - Obtenido: 4 </li>
  45.             </ol>
  46.  
  47.             <ol class="reset">
  48.                 <li>Numeración: 1 - Obtenido: 1 </li>
  49.                 <li>Numeración: 2 - Obtenido: 2</li>
  50.             </ol>
  51. </div>
  52.        
  53. <div>
  54.             <ol class="reset">
  55.                 <li>Numeración: 3 - <del>Obtenido: 5 </del> 3</li>
  56.                 <li>Numeración: 4 - <del>Obtenido: 6 </del> 4</li>
  57.             </ol>
  58. </div>
  59.     <ol class="otra">
  60.                 <li>Numeración: 5 - Obtenido: 5 </li>
  61.                 <li>Numeración: 6 - Obtenido: 6 </li>
  62.                 <li>Numeración: 7 - Obtenido: 7 </li>
  63.                 <li>Numeración: 8 - Obtenido: 8 </li>
  64.     </ol>
  65. <div>
  66.           <div>
  67.               <ul>
  68.                   <li>Una lista más profunda que también cuenta, pero no este /li/:</li>
  69.                   <li>
  70.                       <ol class="reset">
  71.                           <li>Numeración: 5 - Obtenido: 5 </li>
  72.                           <li>Numeración: 6 - Obtenido: 6</li>
  73.                       </ol>
  74.                   </li>
  75.                   <li>Tampoco este /li/ aumenta el contador, porque su /ul/ padre no tiene ninguna de las /class/ definidas para incrementar</li>
  76.               </ul>
  77.           </div>
  78. </div>
  79. </body>
  80. </html>
Si copia y ejecuta el código anterior, debe ver algo como lo siguiente:


Espero haber sido lo suficientemente claro como para resolver su problema, comprendiendo el porqué obtenía lo que obtenía y cómo lograr lo que necesitaba.

Hasta sólo los hados saben cuándo, usuarios de css.