Espacés de manière égale dans les liens de navigation qui prennent toute la largeur de l'ul en CSS3
J'aimerais créer une navigation horizontale liste de liens, où la valeur liquidative des liens sont régulièrement espacés et de prendre toute la largeur de la enfermant conteneur <ul>
. Nav liens peuvent être de différentes largeurs. La première et la dernière des liens doit être aligné avec le début et la fin de la <ul>
respectivement (ce qui signifie les liens ne sont pas centrées), comme ceci:
|left side..right side|
link1 link1 link3 link4
Si je ne me trompe, je ne pense pas qu'il existe un moyen de le faire dans CSS2. Mais est-il un moyen de le faire en CSS3? Sinon, je vais avoir besoin de le faire en Javascript.
OriginalL'auteur North Krimsly | 2011-06-28
Vous devez vous connecter pour publier un commentaire.
Si vous insistez sur CSS3, vous pouvez le faire avec
box-flex
. Car ce n'est pas entièrement mis en œuvre dans tous les navigateurs, les propriétés ont encore le-moz
et-webkit
préfixes.Voici le CSS:
Mais depuis tous les navigateurs de l'utiliser, vous devez ajouter
-moz-box-flex
,-webkit-box-flex
, etc.Voici une démo: http://jsfiddle.net/tBu4a/9/
Qu'entendez-vous par là? Vous pouvez poster votre solution? Je ne suis pas vraiment comprendre ce que tu veux dire...
Blender, désolé si je n'ai pas l'explique très bien. Veuillez voir le commentaire sous l'robertc que j'ai posté ci-dessous, pour certains plus de contexte.
Ohhh, ok. Pour cela, vous devez ajouter une alternance de vide
li
éléments et de leur donner unbox-flex: 1
. Leli
s avec les liens serait juste normaldisplay: inline-block
s. Permettez-moi de modifier ma solution.Ici ya go: jsfiddle.net/tBu4a/15
OriginalL'auteur Blender
C'est simple à faire avec CSS2:
Voici un exemple de travail. Le problème n'est pas tellement que CSS2 n'ont pas les moyens de le faire, c'est que IE ne l'ai pas entièrement en charge CSS2 jusqu'à la version 8.
--edit
OK, maintenant, je crois que je comprends de vos besoins:
Ici, il est en action. J'ai remis à zéro toutes les frontières et rembourrage en fonction de vos commentaires, vous pouvez ajouter un peu de retour, mais vous, bien sûr, besoin de remettre à zéro la bordure gauche/rembourrage du premier lien et le bord droit/remplissage de la droite lien en utilisant soit
li:first-child
ouli:first-child a
(et le contrairelast-child
).<ul>
). Les bords gauche et droit de la première et de la dernière liaison doivent être de niveau avec les bords gauche et droit de la enfermant conteneur, tout en étant régulièrement espacés. C'est la partie la plus délicate de cette question.Ils occupent toute la largeur disponible, mais le conteneur a une frontière (de sorte que vous pouvez voir qu'ils sont de prendre toute la largeur disponible). Juste à l'ensemble de toutes les frontières à 0 si vous ne voulez pas les voir, cet exemple explique que si vous définissez une couleur d'arrière-plan sur la
nav
etul
éléments, il n'apparaît pas derrière lea
éléments.Salut robertc, le 'x' dans 'six' devrait s'aligner flush avec le côté droit du conteneur, avec tous les liens étant régulièrement espacés. Dans l'exemple de code dans le lien que vous avez posté, 'six', ne pas rincer avec le côté droit du conteneur. Voir [lien]stackoverflow.com/questions/6513438/... pour le Javascript solution que j'ai écrit. Tiens encore à le faire fonctionner dans le CSS! Merci encore.
Merci beaucoup pour vos efforts robertc-- qui est vraiment proche. Mais les liens ne sont pas espacés de manière égale en raison de l'text-align sur les premier et dernier éléments de la liste. Pourtant, je comprends que le texte s'aligne sont nécessaires afin que les liens de la ligne sur les bords du récipient.
OriginalL'auteur robertc