J'ai utilisé cet outil pour générer le menu: https: //www.cssportal. com / css3-menu-Generator / Cela fonctionne très bien sauf que le menu est aligné horizontalement sur la gauche de la page.
J'ai essayé d'envelopper le contenu en div et d'utiliser l'alignement du texte. J'ai essayé d'utiliser la gauche et la marge gauche Mais le dernier élément du menu passe à la ligne suivante.
Ce que je veux, c'est avoir tout le menu assis au milieu de la page (horizontalement).
<ul id="menu-bar"> <li class="active"><a href="#">Home</a></li> <li><a href="#">Products</a></li> <li><a href="#">Services</a></li> <li><a href="#">About</a></li> </ul>
#menu-bar { width: 95%; margin: 0px 0px 0px 0px; padding: 6px 6px 4px 6px; height: 40px; line-height: 100%; background: #FFFFFF; border: solid 0px #FFFFFF; position: relative; z-index: 999; } #menu-bar li { margin: 0px 0px 8px 0px; padding: 0px 20px 0px 4px; float: left; position: relative; list-style: none; } #menu-bar a { font-weight: normal; font-family: arial; font-style: normal; font-size: 17px; color: #000000; text-decoration: none; display: block; padding: 6px 20px 6px 20px; margin: 0; margin-bottom: 8px; } #menu-bar .active a, #menu-bar li:hover>a { background: #FFFFFF; color: #FA550F; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); } #menu-bar:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; } #menu-bar { display: inline-block; } html[xmlns] #menu-bar { display: block; } * html #menu-bar { height: 1%; }
7 Réponses :
Vous devez ajouter text-align: center; dans # barre de menu, supprimez float: left; à partir de # menu-bar li et ajoutez display: inline-block;
Le code correct:
#menu-bar { width: 95%; margin: 0px 0px 0px 0px; padding: 6px 6px 4px 6px; height: 40px; line-height: 100%; background: #FFFFFF; border: solid 0px #FFFFFF; position: relative; z-index: 999; text-align: center; } #menu-bar li { margin: 0px 0px 8px 0px; padding: 0px 20px 0px 4px; position: relative; list-style: none; display: inline-block; }
Appliquer sur menu-bar
CSS:
display: inline-block;
Ou:
left: 50%;
Ajoutez également barre de menu li CSS:
margin: 0 auto;
Essayez d'utiliser diplay: flex
pour effectuer l'alignement facilement. Ceci est un exemple de code
HTML
#menu-bar { height: 40px; line-height: 100%; background: #FFFFFF; border: solid 0px #FFFFFF; position: relative; z-index: 999; } #menu-bar li { margin: 0px 0px 8px 0px; padding: 0px 20px 0px 4px; float: left; position: relative; list-style: none; } #menu-bar a { font-weight: normal; font-family: arial; font-style: normal; font-size: 17px; color: #000000; text-decoration: none; display: block; padding: 6px 20px 6px 20px; margin: 0; margin-bottom: 8px; } #menu-bar .active a, #menu-bar li:hover > a { background: #FFFFFF; color: #FA550F; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); } #menu-bar:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; } #menu-bar { display: inline-block; } html[xmlns] #menu-bar { display: block; } * html #menu-bar { height: 1%; } .flex { display: flex; flex-direction: row; justify-content: center; }
CSS
<div class="flex"> <ul id="menu-bar"> <li class="active"><a href="#">Home</a></li> <li><a href="#">Products</a></li> <li><a href="#">Services</a></li> <li><a href="#">About</a></li> </ul> </div>
JS Fiddle Link: https://jsfiddle.net/SJ_KIllshot/6z483d7n/
J'ai modifié le CSS pour obtenir le résultat.
<ul id="menu-bar"> <li class="active"><a href="#">Home</a></li> <li><a href="#">Products</a></li> <li><a href="#">Services</a></li> <li><a href="#">About</a></li> </ul>
J'ai changé la propriété d'affichage # menu-bar
en display: block; code > et pour créer un lien à l'intérieur au centre, utilisez
text-align: center;
. Mais il ne suffira pas de créer le centre du lien, j'ai donc effectué la modification suivante.
#menu-bar { width: 95%; margin: 0px 0px 0px 0px; padding: 6px 6px 4px 6px; height: 40px; line-height: 100%; background: #FFFFFF; border: solid 0px #FFFFFF; position: relative; z-index: 999; } #menu-bar li { margin: 0px 0px 8px 0px; padding: 0px 20px 0px 4px; /**float: left;**/ position: relative; list-style: none; display: inline-block; } #menu-bar a { font-weight: normal; font-family: arial; font-style: normal; font-size: 17px; color: #000000; text-decoration: none; display: block; padding: 6px 20px 6px 20px; margin: 0; margin-bottom: 8px; } #menu-bar .active a, #menu-bar li:hover>a { background: #FFFFFF; color: #FA550F; -webkit-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); -moz-box-shadow: 0 1px 1px rgba(0, 0, 0, .2); } #menu-bar:after { content: "."; display: block; clear: both; visibility: hidden; line-height: 0; height: 0; } #menu-bar { /*display: inline-block;*/ display: block; text-align: center; } html[xmlns] #menu-bar { display: block; } * html #menu-bar { height: 1%; }
float: left
forçant en fait les éléments du lien à gauche, Je l'ai omis et en ai fait un élément en ligne avec display: inline-block;
.
#menu-bar li { margin: 0px 0px 8px 0px; padding: 0px 20px 0px 4px; /**float: left;**/ position: relative; list-style: none; display: inline-block; }
#menu-bar { /* display: inline-block;*/ display: block; text-align: center; }
Ça marche. Merci. Pour une raison quelconque, la gauche sur "largeur: 95%;" perturbait l'alignement.
@DanCele Si cela fonctionne, vous devez accepter la réponse en cliquant sur la coche grise ✔
. De cette façon, les autres peuvent savoir qu'il existe une solution de travail à ce problème.
En option, ajoutez la propriété text-align au conteneur:
#menu-bar li { margin: 0px 0px 8px 0px; padding: 0px 20px 0px 4px; list-style: none; display: inline-block; }
et changez les styles de
#menu-bar { width: 95%; margin: 0px 0px 0px 0px; padding: 6px 6px 4px 6px; height: 40px; line-height: 100%; background: #FFFFFF; border: solid 0px #FFFFFF; position: relative; z-index: 999; text-align: center; }
Vous pouvez centrer des éléments en ligne horizontalement, dans un élément parent au niveau du bloc, avec seulement:
.center-me { margin: 0 auto; }
Vous pouvez centrer un élément au niveau du bloc en lui donnant margin-left et margin-right de auto (et il a une largeur définie, sinon il serait pleine largeur et n'aurait pas besoin de centrage). Cela se fait souvent avec un raccourci comme celui-ci:
.center-children { text-align: center; }
Je recommande à tout cet article https://css-tricks.com/centering-css-complete-guide/
Salut Dan et bienvenue sur Stack Overflow. Je viens de vérifier votre violon et tous les éléments apparaissent sur une seule ligne mais alignés à gauche. Peut-être que votre résolution ou vos paramètres de violon provoquent le saut de ligne. Pouvez-vous décrire un peu plus ce que vous souhaitez réaliser? "... sauf que le menu est aligné horizontalement sur la gauche de la page" sonne comme si vous vouliez qu'il s'aligne différemment.