Web 2.0, Ajax, JavaScript, PHP, xHTML e Css
Questo è un elenco di problemi principali che si hanno lavorando con Internet Explorer.
La prima cosa da fare è ripristinare i vostri stili. Disporre all’inizio del vostro css una soluzione di reset che rimuove il padding, margin e border e altre incongruenze dagli elementi.
Un buon esempio è il codice reset.css di Eric Meyer.
Ridimensionare le immagini alla dimensione desiderata prima di utilizzarla nel sito.
E’ necessario aggiungere questa regola al selettore:
p {
text-shadow: #000 0 0 0;
}
Finché è un font sicuro va tutto bene nella visualizzazione. Tuttavia bisogna informarsi e verificare questi problemi di rappresentazione: ad esempio, un font che probabilmente non dovreste usare è Lucida Grande/Sans, il quale rende bruttissimo in Internet Explorer.
È necessario specificare la dimensione in percentuale nell’elemento body, e quindi la dimensione in em, attraverso il resto del foglio. line-height è necessario definirla in em, piuttosto che in pixel, per una rappresentazione costante.
Una cosa da ricordare è che la dimensione del font di default è 16px. Quindi, per ridimensionarlo a 12px usiamo:
body {
font-size: 75%;
line-height: 1.5em;
}
h1 {
font-size: 3em; /* 36px */
}
#content {
float: right;
width: 300px;
margin-right: 10px;
}
#sidebar {
float: right;
width: 100px;
}
In IE qualsiasi margine che si trova sullo stesso lato del float sarà raddoppiato. Questo significa che l’elemento content a sinistra avrà tale margine esteso a 20px.
Per risolvere il problema, tutto quello che dovete fare è applicare la proprietà display:inline sui box del layout:
#content {
float: right;
width: 300px;
margin-right: 10px;
display: inline;
}
#sidebar {
float: right;
width: 100px;
display: inline;
}
La soluzione migliore è un semplice overflow:auto o overflow:hidden nel div contenitore:
#container {
width: 966px;
margin: 0 auto;
overflow: auto;
}
È necessario tenere a mente che overflow: auto potrebbe causare alcuni problemi con Firefox: se si verificano problemi usare overlflow:hidden.
Usare soltanto E + F, E > F, E ~ F. Se realmente dovete utilizzare questi selettori, dovreste esaminare IE8.js che dà a IE6 il migliore supporto dei selettori. Tuttavia questo rallenterà il vostro sito.
Esistono tre soluzioni per questo problema.
E’ possibile utilizzare AlphaImageLoader in un foglio di stile specifico per IE: aggiungi queste proprietà a qualsiasi immagine PNG che si desidera avere la trasparenza.
.trans {
background-image: none;
filter: progid:DXImageTransform.Microsoft.AlphaImageLoader(src='/images/transparent.png', sizingMethod='image/scale/crop');
}
È necessario creare una PNG trasparente 1×1 e collegarla ad essa nell’attributo src.
Un modo migliore per farlo è IE5.5+ PNG Alpha Fix simile al AlphaImageLoader, tranne per il fatto che si collega ad uno script JavaScript che innesca la trasparenza.
Il terzo metodo è quello di utilizzare IE8.js citato sopra. E’ anche più sicuro rispetto al metodo precedente. Realizzerà la trasparenza a qualsiasi png che finisce -trans; ad es. myimage-trans.png.
Angelo
Dicembre 1st, 2008 alle 18:55
certo che IE è un danno!! meno male che si può porre rimedio grazie a questi hack!
Francesco Gavello
Dicembre 4th, 2008 alle 00:08
I doppi margini sui float! :-O
Mi scatena ricordi ancestrali. Ricordo che ci impazzi per una settimana; all’epoca c’erano pochi repository dove andare a spulciare i numerosi bug di IE.