70 votes

Comment centrer horizontalement une liste non ordonnée de largeur inconnue ?

Il est courant d'avoir un ensemble de liens dans un pied de page représenté dans une liste, comme par exemple :

<div id="footer">
    <ul>
        <li><a href="#">Home</a></li>
        <li><a href="#">About</a></li>
        <li><a href="#">Contact</a></li>
    </ul>
</div>

Je veux que tout ce qui se trouve à l'intérieur de div#footer soit centré horizontalement. S'il s'agissait d'un paragraphe, vous pourriez facilement dire : p { text-align: center; } . Ou si je connaissais la largeur de la <ul> Je pourrais juste dire #footer ul { width: 400px; margin: 0 auto; } .

Mais comment centrer les éléments d'une liste non ordonnée sans définir une largeur fixe sur l'écran de l'utilisateur ? <ul> ?

EDIT : clarification - les éléments de la liste devraient être les uns à côté des autres, et non en dessous.

165voto

philfreo Points 12382

La solution, si les éléments de votre liste peuvent être display: inline est assez facile :

#footer { text-align: center; }
#footer ul { list-style: none; }
#footer ul li { display: inline; }

Cependant, vous devez souvent utiliser display:block sur votre <li> s. Le CSS suivant fonctionnera, dans ce cas :

#footer { width: 100%; overflow: hidden; }
#footer ul { list-style: none; position: relative; float: left; display: block; left: 50%; }
#footer ul li { position: relative; float: left; display: block; right: 50%; }

34voto

Yuvaraj Points 261

Utilisez le fichier css ci-dessous pour résoudre votre problème

#footer{ text-align:center; height:58px;}
#footer ul {  font-size:11px;}
#footer ul li {display:inline-block;}

Note : Ne pas utiliser float:left dans li. Cela fera que votre li sera aligné à gauche.

12voto

Andrey Points 131

Une solution de plus :

#footer { display:table; margin:0 auto; }
#footer li { display:table-cell; padding: 0px 10px; }

Ainsi, ul ne saute pas à la ligne suivante en cas de zoom sur le texte.

8voto

cletus Points 276888

Cela dépend si vous voulez dire que les éléments de la liste sont en dessous du précédent ou à droite du précédent, c'est-à-dire.. :

Home
About
Contact

ou

Home | About | Contact

Le premier, vous pouvez le faire simplement avec :

#wrapper { width:600px; background: yellow; margin: 0 auto; }
#footer ul { text-align: center; list-style-type: none; }

La seconde pourrait se faire comme suit :

#wrapper { width:600px; background: yellow; margin: 0 auto; }
#footer ul { text-align: center; list-style-type: none; }
#footer li { display: inline; }
#footer a { padding: 2px 12px; background: orange; text-decoration: none; }
#footer a:hover { background: green; color: yellow; }

2voto

Essayez d'envelopper la liste dans un div et donnez à ce div la propriété inline à la place de votre liste.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X