Quoi que j'essaye, je ne peux pas centrer quelque chose dans la barre de navigation Bootstrap, des solutions pour cela?
J'ai essayé d'ajouter un div, en utilisant margin:0 auto;
ou margin-right:auto; margin-left:auto;
, utilisé la classe center-block
. Rien ne fonctionne, pourquoi est-il si difficile de réaliser quelque chose d'aussi simple que je ne peux pas comprendre, qu'est-ce que je fais mal?
Voici le code actuel:
<nav class="navbar navbar-fixed-top navbar-dark main-nav">
<div class="container">
<ul class="nav navbar-nav pull-left">
<li class="nav-item active">
<a class="nav-link" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Download</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Register</a>
</li>
</ul>
<ul class="nav navbar-nav text-center">
<li class="nav-item"><a class="nav-link" href="#">Website Name</a></li>
</ul>
<ul class="nav navbar-nav pull-right">
<li class="nav-item">
<a class="nav-link" href="#">Rates</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Help</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</div>
Dans Bootstrap 4, il existe un nouvel utilitaire appelé .mx-auto
. Il vous suffit de spécifier la largeur de l'élément centré.
Réf.: http://v4-alpha.getbootstrap.com/utilities/spacing/#horizontal-centering
Différent de la réponse de Bass Jobsen, qui est un centre relatif aux éléments situés aux deux extrémités, l'exemple suivant est centré absolu.
Voici le code HTML:
<nav class="navbar bg-faded">
<div class="container">
<ul class="nav navbar-nav pull-sm-left">
<li class="nav-item">
<a class="nav-link" href="#">Link 1</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link 2</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link 3</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link 4</a>
</li>
</ul>
<ul class="nav navbar-nav navbar-logo mx-auto">
<li class="nav-item">
<a class="nav-link" href="#">Brand</a>
</li>
</ul>
<ul class="nav navbar-nav pull-sm-right">
<li class="nav-item">
<a class="nav-link" href="#">Link 5</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link 6</a>
</li>
</ul>
</div>
</nav>
Et CSS:
.navbar-logo {
width: 90px;
}
Mis à jour pour Bootstrap 4.1+
Bootstrap 4, la barre de navigation utilise maintenant flexbox afin que le Website Name
puisse être centré avec mx-auto
. Les menus latéraux gauche et droit ne nécessitent pas de flotteurs.
<nav class="navbar navbar-expand-md navbar-fixed-top navbar-dark bg-dark main-nav">
<div class="container">
<ul class="nav navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Download</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Register</a>
</li>
</ul>
<ul class="nav navbar-nav mx-auto">
<li class="nav-item"><a class="nav-link" href="#">Website Name</a></li>
</ul>
<ul class="nav navbar-nav">
<li class="nav-item">
<a class="nav-link" href="#">Rates</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Help</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</div>
</nav>
Centre Navbar avec mx-auto
Démo
Si la barre de navigation n'a qu'un seul navbar-nav
, alors justify-content-center
peut également être utilisé pour centrer.
Dans la solution ci-dessus, le Website Name
est centré relatif à gauche et à droite navbar-nav
; ainsi, si la largeur de ces navs adjacents est différente, le Website Name
n'est plus centré.
Pour résoudre ce problème, l’une des solutions de contournement flexbox pour centrage absolu peut être utilisée ...
Option 1 - Position d'utilisation: absolue;
Puisqu'il est correct d'utiliser le positionnement absolu dans flexbox, une option consiste à utiliser ceci sur l'élément à centrer.
.abs-center-x {
position: absolute;
left: 50%;
transform: translateX(-50%);
}
Centre Navbar avec position absolue Démo
Option 2 - Utiliser l'imbrication de boîtes flexibles
Enfin, une autre option consiste à rendre l'élément centré également display:flexbox
et à justifier le centre. Dans ce cas, chaque composant de la barre de navigation doit avoir flex-grow:1
À compter de la version bêta de Bootstrap 4, la barre de navigation est maintenant display:flex
. Bootstrap 4.1.0 inclut une nouvelle classe flex-fill
pour que chaque section de navigation remplisse la largeur:
<nav class="navbar navbar-expand-sm navbar-dark bg-dark main-nav">
<div class="container justify-content-center">
<ul class="nav navbar-nav flex-fill w-100 flex-nowrap">
<li class="nav-item active">
<a class="nav-link" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Download</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Register</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">More</a>
</li>
</ul>
<ul class="nav navbar-nav flex-fill justify-content-center">
<li class="nav-item"><a class="nav-link" href="#">Center</a></li>
</ul>
<ul class="nav navbar-nav flex-fill w-100 justify-content-end">
<li class="nav-item">
<a class="nav-link" href="#">Help</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</div>
</nav>
Centre Navbar avec imbrication Flexbox Démo
Avant Bootstrap 4.1.0, vous pouvez ajouter la classe flex-fill comme ceci ...
.flex-fill {
flex:1
}
À partir de la version 4.1, flex-fill
est inclus dans Bootstrap.
Démos de Bootstrap 4 Navbar Center
En relation:
Comment centrer les éléments de navigation dans Bootstrap?
Bootstrap NavBar avec des éléments alignés à gauche, au centre ou à droite
Essaye ça.
.nav-tabs > li{
float:none !important;
display:inline-block !important;
}
.nav-tabs {
text-align:center !important;
}
J'avais un problème similaire; le texte d'ancrage dans ma barre de navigation Bootstrap4 n'était pas centré. Il suffit d'ajouter text-center
dans la classe d'ancrage.
utiliser mx-auto fera le travail
<ul class="navbar-nav mx-auto">
Voir: https://stackoverflow.com/a/14146967/1596547 , vous pouvez maintenant utiliser:
<nav class="navbar navbar-light main-nav">
<div class="container text-xs-center">
<ul class="nav navbar-nav pull-xs-left">
<li class="nav-item active">
<a class="nav-link" href="#">Home</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Download</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Register</a>
</li>
</ul>
<ul class="nav navbar-nav" style="display: inline-block;">
<li class="nav-item"><a class="nav-link" href="#">Website Name</a></li>
</ul>
<ul class="nav navbar-nav pull-xs-right">
<li class="nav-item">
<a class="nav-link" href="#">Rates</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Help</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Contact</a>
</li>
</ul>
</div>
</nav>
appliquez text-xs-center
sur votre conteneur et définissez display: inline-block;
pour votre liste.
des docs
Les barres de navigation peuvent contenir des morceaux de texte à l’aide de .navbar-text. Cette classe ajuste l’alignement vertical et l’espacement horizontal des chaînes de texte.
j'ai appliqué la classe .navbar-text à mon élément <li>
, de sorte que le résultat est
<li class="nav-item navbar-text">
cela centre les liens verticalement par rapport à mon imbar de marque navbar
faire un nouveau style
.container {
position: relative;
}
.center-nav {
position: absolute;
left: 0;
right: 0;
margin: 0 auto;
width: auto;
max-width: 200px;
text-align: center;
}
.center-nav li{
text-align: center;
width:100%;
}
Remplacer le nom du site Web UL par le suivant
<ul class="nav navbar-nav center-nav">
<li class="nav-item"><a class="nav-link" href="#">Website Name</a></li>
</ul>
J'espère que cela t'aides..