Nel post di ieri abbiamo visto come sia possibile ottenere indicatori di percentuale fluidi senza markup aggiuntivo e grazie al generated content. L'esempio però purtroppo non funziona su IE dato il mancato supporto dello pseudo-elemento :before e della proprietà content.
L'idea di base si può però elaborare: ecco quindi l'esempio 2 che incorpora uno <span> vuoto per fare il lavoro del generated content e in via teorica in grado di estendere la compatibilità anche su IE.
Ecco il markup:
<div class="progress" id="pe1"><span></span>100%</div>
<div class="progress" id="pe2"><span></span>50%</div>
<div class="progress" id="pe3"><span></span>20%</div>
Ed ecco il CSS, in cui il principio di base è l'uso del margine negativo inferiore sullo span per sovrapporre il testo alla banda verde:
div.progress{width: 60%;border:1px solid #666;text-align: center;
line-height: 1.3em;margin-bottom: 1em}
div.progress span{display: block;height: 1.3em;
margin-bottom: -1.3em;background: #3f3}
div#pe1 span{width:100%}
div#pe2 span{width:50%}
div#pe3 span{width:20%}
Su IE (dalla versione 5 alla 7) c'è però qualche problema: il text-align:center centra erroneamente anche elementi block-level. Ecco infatti come rende:

Sugli altri browser, ovviamente, l'esempio è perfetto. Il passo successivo quindi è eliminare il problema dell'allineamento del testo e dello span. Nell'esempio 3 le cose funzionano anche su IE, se ci accontentiamo
di avere testo che indica la percentuale non centrato.
Altrimenti è necessario un altro compromesso nel markup...ecco quindi l'ultimo esempio, che oltre allo <span> usa un <b> per racchiudere il testo della percentuale: finalmente è compatibile con IE5, IE5.5, IE6, IE7, Opera, Firefox e Safari.
Il risultato finale ha richiesto un po' di lavoro, è robusto e flessibile e non usa immagini. Certo che rispetto al primo esempio si presenta molto meno elegante e leggero, ma per estendere la compatibilità su Internet Explorer si è dovuto accettare qualche compromesso. Se però si ha la necessità di indicatori di percentuali fluidi credo sia una buona soluzione. Alla prossima.
Se vuoi aggiornamenti su CSS inserisci la tua email nel box qui sotto: