J'en ai oublié un morceau : pour que le paramètre '
auto' fonctionne avec l'attribut '
margin', il faut que le conteneur et l'objet contenu aient chacun des dimensions latérales définies, ou au moins l'objet contenu et que sa largeur soit inférieure à celle de son conteneur.. Sinon, le contenu prend la largeur du conteneur, c'est le principe de l'héritage des propriétés..
Et gare aux '
margin: 0;' qui se promènent ici et là : en plus du principe de l'héritage, les règles CSS sont additives et un objet peut être défini à travers autant de règles et de feuilles CSS qu'il peut parfois être nécessaire.. Dans tes règles CSS, tu en as 2 qui risquent d'être en conflit :
#Menu li et
#Menu ul li. C'est à priori le même objet, puisqu'un <li> ne peut être contenu
que dans un <ul> ou un <ol>..
De plus, la règle '
float' ne permet aucun centrage ou autre : elle "retire" l'objet du flux principal (comme le ferait '
position: absolute;') et le colle sans conditions à gauche ou à droite.. La règle '
margin' fonctionne, mais pas le paramètre '
auto'.. Le truc "en plus" du '
float' sur le 'position: absolute;', c'est que le 'float' provoque le décalage du contenu voisin dans la box.. Pour le reste, il se comporte pareil..
Mais comme '
float' est de la famille des '
position: absolute;', son abus pour du positionnement peu provoquer des misères au niveau de la hauteur du bloc conteneur : si le contenu dans le flux "normal" est insuffisant et que le conteneur n'a pas de hauteur définie (recommandé pour des blocs adaptables au contenu), l'objet en '
float' va dépasser du conteneur et les objets qui suivent ce conteneur seront de toutes façons positionnés par rapport au conteneur, ignorant le '
float'.. Sauf que IE ne fait pas tout à fait ça : il n'isole pas complètement le '
float' comme le veut la recommendation CSS.. Le soucis est flagrant avec tous les navigateurs respectueux des recommendations..
Donc, pour ton <ul>, essaie de ne pas mettre pas de règle '
float' et essaie le '
margin: 0 auto;' à la place..