Existe-t-il un meilleur choix que float: left
ou display: inline
pour aligner les éléments de la liste horizontalement?
exemple: http://www.vanseodesign.com/css/simple-navigation-bar-with-css-and-xhtml/
Personnellement, je n'aime pas float
, mais c'est peut-être plus une chose émotionnelle que logique.
ul { list-style-type: none; overflow: hidden; width:200px; }
ul li { float:left; width: 100px; }
ul li a { display: block; padding: 10px; width:80px; }
ul li a:hover { background: black; }
<ul>
<li><a href="http://www.facebook.com">Facebook</a></li>
<li><a href="httpt://www.google.com">Google</a></li>
</ul>
C’est ce que je préfère surtout parce que lorsque vous utilisez display:inline
, vous ne pouvez pas définir de propriétés telles que la largeur, le remplissage (haut et bas), la marge, etc., ce qui est un handicap pour la mise en page.
EDIT 2014
C'est également une option d'utiliser la propriété display: inline-block
. Une chose à noter est que, une fois que les éléments de la liste sont insérés en ligne ou en bloc, les espaces sont pris en compte. Par conséquent, il y aura des espaces indésirables entre les éléments.
ul { list-style-type: none; width: 300px; font-size: 0; }
ul li { display: inline-block; *display: inline; zoom: 1; margin-right: 10px; }
/* The *display and zoom is a IE hack, though can't remember
now which one (guess it is IE7) */
ul li a { display: inline-block; padding: 10px; font-size: 13px; }
Vérifiez le violon ici.
Si vous ne souhaitez pas utiliser la propriété font-size
(pour les problèmes de compatibilité de navigateur), vous pouvez également utiliser des commentaires HTML pour vous débarrasser des espaces! Bien que je préfère la méthode ci-dessus.
<ul><!--
--><li><a href="http://www.facebook.com">Facebook</a></li><!--
--><li><a href="httpt://www.google.com">Google</a></li><!--
--></ul>
Qu'en est-il de
li {
display:inline-block
};
Vous pouvez ensuite définir des propriétés telles que la largeur, la hauteur, le remplissage, la marge, etc.
J'ai remarqué quelques erreurs de rendu lors de l'affichage de Inline de LI en chrome. Parfois, ma bordure LI ne s'affiche pas avec le remplissage horizontal approprié.
En général, cependant, j'aime bien Inline, cela vous donne toujours des marges horizontales et des marges intérieures et vous pouvez faire un Nice text-align: center; sur l'UL et utiliser l'UL pour l'espacement vertical.
J'ai tendance à utiliser float uniquement parce qu'un LI est un élément de bloc par défaut et devrait être traité de cette façon à mon avis, mais il existe des cas d'utilisation clairs pour les deux.
C'est une préférence personnelle.
À partir d'un point CSS, Display:Inline
= Float:Left(Right)
.
Quand il s’agit de rendre des éléments horizontaux, comme <li>
.
La règle css Float est plus récente que Display.