Internet Explorer 6: eliminare il baco del doppio margine
martedì 16 dicembre, 2008Tra le varie simpatiche “interpretazioni” che Internet Explorer 6 riesce a fare con HTML/CSS, quella del “doppio margine” è sicuramente la più noiosa e frequente. In pratica (udite, udite…) il buon browser Microsoft riesce – misteriosamente – a raddoppiare i margini sugli elementi impostati in float! Dato ad esempio il seguente codice CSS, applicato ad un div con id box:
1 | div#box{display:block;width:100px;height:100px;margin-left:100px;float:left} |
Si ottiene:

Dove è n è il nostro margine sinistro di 100px! Questo difetto, fortunatamente, avviene solo in determinate circostanze, cioè quando il margine coincide con la direzione del float e quando il nostro div#box si trova a diretto contatto con il suo contenitore. Questo significa che un ulteriore div#box sulla stessa riga non soffrirebbe del problema in quanto si troverebbe a sinistra non più il contenitore ma il div#box precedente. Ovviamente il problema non è specifico del margine sinistro ma risulta speculare; invertendo il tutto si produrrebbe lo stesso identico problema con il margine destro!
Soluzione
La soluzione è davvero semplice: basta inserire la dichiarazione display:inline nel nostro CSS e il difetto scompare:
1 2 | div#box{display:block;width:100px;height:100px;margin-left:100px;float:left; display:inline} |
L’introduzione di display:inline verrà ignorata da tutti gli altri browser e non perchè siamo particolarmente fortunati ma bensì da specifiche W3C:
…The ‘display’ is ignored, unless it has the value ‘none’.











1

non ho capito una cosa:
nella definizione della classe devono essere presenti sia il display:block che il display:inline. ?
lasciando solo il secondo presenta lo stesso difetto?
grazie
@maurizio:
Il
display:blocklo puoi sostituire condisplay:inlineRicordo che fu uno dei primi bug ai quali mi trovai di fronte con IE6.
)
Perlomeno in questo caso la soluzione è quantomeno immediata (purché la si conosca
[...] ci spiega semplicemente come eliminare il problema del doppio margine in IE6, la bestia nera dei web [...]
Sei un grande, ti farei un monumento! Chiaro, semplice e veloce! Ottimo post
Sei un GRANDE! funziona benissimo. finalmente i miei pulsanti si vedono solo una volta. Il comando “display:inline” risolve una miriade di problemi di IE.