Hai provato a usare l'elemento <ul> per la centratura delle voci del menu? In pratica, si tratta di usare l'elemento <ul> (che assume larghezza pari alla somma delle larghezze dei singoli[*] che contiene) per centrare le voci che contiene.
codice:
body {
text-align: center; /* Centra orizzontalmente nella pagina per IE!!! */
}
ul {
text-align: left; /* Ripristina l'allineamento a sinistra del testo */
padding: 0;
margin: 0 auto; /* centra orizzontalmente nel box contenitore o
nella pagina per Opera e Mozilla */
}
li {
list-style: none;
float: left;
padding: 0;
margin: 0;
}
In sostanza, per centrare orizzontalmente un elemento in un altro, lo standard impone di assegnare auto come valore ai margini orizzontali di tale elemento. IE (che gli standard non li segue mai, anzi ne fa uno suo!), impone invece di dichiarare text-align: center nella regola del box contenitore di quello che si vuole centrare!
Questo per quanto riguarda la sola centratura orizzontale rispetto alla pagina o al box contenitore. Se vuoi centrare anche (o solo) verticalmente le voci del menu, puoi usare sempre l'elemento contenitore <ul> impostandolo con un position: absolute e i margini negativi.
codice:
ul {
position: absolute;
top: 50%
left: 50%;
margin: -YYpx -XXpx;
padding: 0;
}
li {
list-style: none;
float: left;
padding: 0;
margin: 0;
}
YY e XX sono esattamente la metà rispettivamente dell'altezza e della larghezza complessiva dell'elemento <ul>. Dovrai quindi assegnare esplicitamente un'altezza all'elemento <ul> (o agli elementi[*]) tramite height o line-height. Al posto di centrare l'elemento <ul> potresti anche (e forse più semplicemente) centrare un elemento <div> che contiene la tua lista, attribuendogli così dimensioni precise.
Ricorda che un elemento position: absolute ha sempre la posizione (determinata con top/bottom e left/right) riferita al suo elemento contenitore, purché esso sia position: relative. In caso contrario, se nessun elemento "padre" è position: relative, i box position: absolute si posizionano in relazione all'elemento body.