In questi casi, ti suggerisco di cambiare totalmente approccio. Non solo per i problemi dei posizionamenti con quel browser da terzo mondo di IE, ma anche per i contenuti del sito. Infatti, se flotti a destra gli elementi di lista del menu, nel codice sei costretta a scriverli al contrario (il primo è appunto "contatti", mentre a video appare giustamente per ultimo a causa del float: right).
Struttura il menu mettendo i link in ordine nel codice, così come devono apparire visualmente sulla pagina. Poi, assicurati di avere un box (div) che racchiude l'intera lista (ul) del menu. Prima di chiudere questo box, aggiungine un altro vuoto a cui assegni una classe CSS che fa il clear sia a destra che a sinistra (clear: both). Es.:
codice:
<div id="nav">
<ul>[*]Link 1[*]Link 2[*]Link 3[/list]
<div class="clr-both"></div>
</div>
A questo punto, nel tuo CSS aggiungi la regola per il clear, flotti a DESTRA l'intera lista (ul) e a SINISTRA i singoli elementi di lista (li, e anche gli elementi a al loro interno, per evitare dei bug). Cosa importante è assegnare almeno una dimensione al box che contiene l'intera lista (meglio se indichi la larghezza), perché altrimenti per IE è "privo di layout":
codice:
#nav {
width: 100%; /* Questo "assegna layout" in IE al box contenitore dei float */
}
#nav ul {
float: right; /* Nota che qui NON si devono specificare dimensioni. Ecco perché serve un box che contiene l'intera lista a cui assegni almeno una dimensione */
}
#nav li {
list-style: none;
float: left;
}
#nav a {
float: left; /* Evita alcuni bug degli elementi a contenuti in elementi di lista flottanti */
}
.clr-both {
font-size: 1px; /* Utile per l'immondo di IE! */
height: 0; /* Ancora utile per l'immondo di IE! */
clear: both; /* Pulisce il float in entrambe le direzioni (perché prima hai flottato sia a destra che a sinistra) */
}
E' importante inserire un elemento vuoto che faccia il clear appena prima di chiudere il box che contiene la lista, in modo che il flusso normale del documento sia ripristinato in quel punto (il box che contiene la lista sarà quindi influenzato dall'altezza degli elementi flottanti che contiene).
Il vantaggio di questo metodo è che le voci del menu (sia i li che gli a) diventano elementi block-level, quindi puoi impostare margini, bordi e padding come vuoi, mentre se fossero disposti orizzontalmente solo con display: inline ignorerebbero i margini e i padding verticali.
Ricordati che se assegni un margine orizzontale ad un elemento flottante sullo stesso lato del float (float: left e margin-left insieme per es.), IE raddoppia il margine (mi pare che il 7 non lo faccia, ma non si sa mai...)! Quindi devi aggiungere alla regola dell'elemento anche display: inline.