叠加导航项右对齐
Superposed nav-item right alignment
使用 Bootstrap 4,我需要将所有导航栏元素右对齐,除了我想要在中间的元素:
<ul class="nav navbar-nav">
<li class="nav-item float-xs-right">
<a class="nav-link" href="/logout">Sign out</a>
</li>
<li class="nav-item float-xs-right">
<a class="nav-link" href="/application/settings">Configuration</a>
</li>
<li class="nav-item float-xs-right">
<a class="nav-link" href="/application/settings">admin@mysite.com</a>
</li>
<li class="nav-item float-xs-right">
<a class="nav-link" href="/about">About</a>
</li>
</ul>
Configuration
项叠加Sign Out
项,如下图:
1) 叠加怎么解?
2) 如果我想让一个项目(例如About
)留在菜单中间(而不是右边)怎么办?
到目前为止,您无法在 v4 中将项目居中,但这里有一个解决方案:
@media (min-width: 992px) {
.navbar-flex {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-moz-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.navbar.navbar-flex:after {
content: none;
}
}
.navbar-flex > *:last-child {
padding-left: 1rem;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" integrity="sha384-AysaV+vQoT3kOAXZkl02PThvDr8HYKPZhNT5h/CXfBThSRXQ6jW5DO2ekP5ViFdi" crossorigin="anonymous">
<nav class="navbar navbar-dark bg-inverse navbar-flex">
<a class="navbar-brand" href="#">Navbar</a>
<ul class="nav navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
</li>
</ul>
<form class="form-inline float-xs-right">
<input class="form-control" type="text" placeholder="Search">
<button class="btn btn-outline-info" type="submit">Search</button>
</form>
</nav>
- 我添加了自定义 class:
navbar-flex
到导航栏
- 我从
.navbar
中删除了 :after
pseudo-element
- 将此行为限制在比
992px
宽的屏幕上 - 如果需要 *(768px),请降低屏幕宽度,但要测试您的元素是否适合较小的屏幕
- 此示例使用 v4 示例中的标记
导航栏中现在有三个元素:
- 标志:会贴在左边
- 中间
.navbar-nav
:这在徽标和 right-side 容器的内容之间居中,与每个容器保持相等的距离。
- right-side 容器(在这个例子中,一个
.inline-form
)可以安全地替换为另一个 .navbar-nav
(你的)并且它会粘在右边。
针对您的具体情况,将 .inline-form
元素(.navbar
的最后一个 child)替换为问题中的 .navbar-nav
(您还应该删除 float-xs-right
classes 来自其 children);然后将你想要的 child 移动到中间 .navbar-nav
如果您需要 un-prefixed 版本,这里是:
@media (min-width: 992px) {
.navbar-flex {
display: flex;
justify-content: space-between;
}
.navbar.navbar-flex:after {
content: none;
}
}
.navbar-flex > *:last-child {
padding-left: 1rem;
}
如果您想要 "boxed",只需将它放入 .container
。
还有一件事:你为什么将问题命名为 "Superposed nav-item right alignment" 而不是 "How can I center a navbar item in Bootstrap v4?"
::<(((*>::
使用 Bootstrap 4,我需要将所有导航栏元素右对齐,除了我想要在中间的元素:
<ul class="nav navbar-nav">
<li class="nav-item float-xs-right">
<a class="nav-link" href="/logout">Sign out</a>
</li>
<li class="nav-item float-xs-right">
<a class="nav-link" href="/application/settings">Configuration</a>
</li>
<li class="nav-item float-xs-right">
<a class="nav-link" href="/application/settings">admin@mysite.com</a>
</li>
<li class="nav-item float-xs-right">
<a class="nav-link" href="/about">About</a>
</li>
</ul>
Configuration
项叠加Sign Out
项,如下图:
1) 叠加怎么解?
2) 如果我想让一个项目(例如About
)留在菜单中间(而不是右边)怎么办?
到目前为止,您无法在 v4 中将项目居中,但这里有一个解决方案:
@media (min-width: 992px) {
.navbar-flex {
display: -webkit-box;
display: -webkit-flex;
display: -moz-box;
display: -ms-flexbox;
display: flex;
-webkit-box-pack: justify;
-webkit-justify-content: space-between;
-moz-box-pack: justify;
-ms-flex-pack: justify;
justify-content: space-between;
}
.navbar.navbar-flex:after {
content: none;
}
}
.navbar-flex > *:last-child {
padding-left: 1rem;
}
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/4.0.0-alpha.5/css/bootstrap.min.css" integrity="sha384-AysaV+vQoT3kOAXZkl02PThvDr8HYKPZhNT5h/CXfBThSRXQ6jW5DO2ekP5ViFdi" crossorigin="anonymous">
<nav class="navbar navbar-dark bg-inverse navbar-flex">
<a class="navbar-brand" href="#">Navbar</a>
<ul class="nav navbar-nav">
<li class="nav-item active">
<a class="nav-link" href="#">Home <span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Features</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Pricing</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">About</a>
</li>
</ul>
<form class="form-inline float-xs-right">
<input class="form-control" type="text" placeholder="Search">
<button class="btn btn-outline-info" type="submit">Search</button>
</form>
</nav>
- 我添加了自定义 class:
navbar-flex
到导航栏 - 我从
.navbar
中删除了 - 将此行为限制在比
992px
宽的屏幕上 - 如果需要 *(768px),请降低屏幕宽度,但要测试您的元素是否适合较小的屏幕 - 此示例使用 v4 示例中的标记
:after
pseudo-element
导航栏中现在有三个元素:
- 标志:会贴在左边
- 中间
.navbar-nav
:这在徽标和 right-side 容器的内容之间居中,与每个容器保持相等的距离。 - right-side 容器(在这个例子中,一个
.inline-form
)可以安全地替换为另一个.navbar-nav
(你的)并且它会粘在右边。
针对您的具体情况,将 .inline-form
元素(.navbar
的最后一个 child)替换为问题中的 .navbar-nav
(您还应该删除 float-xs-right
classes 来自其 children);然后将你想要的 child 移动到中间 .navbar-nav
如果您需要 un-prefixed 版本,这里是:
@media (min-width: 992px) {
.navbar-flex {
display: flex;
justify-content: space-between;
}
.navbar.navbar-flex:after {
content: none;
}
}
.navbar-flex > *:last-child {
padding-left: 1rem;
}
如果您想要 "boxed",只需将它放入 .container
。
还有一件事:你为什么将问题命名为 "Superposed nav-item right alignment" 而不是 "How can I center a navbar item in Bootstrap v4?"
::<(((*>::