【问题标题】:Bootstrap navbar changing button and menu positionsBootstrap 导航栏更改按钮和菜单位置
【发布时间】:2018-10-16 07:46:46
【问题描述】:
我正在使用 Bootstrap 导航栏创建一个网站标题,如下所示:
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
<a class="navbar-brand all-upper mb-1 h1 ml-1" href="#">Brand</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="navbar-expand">
<button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
</div>
<div class="collapse navbar-collapse">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link all-upper" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link all-upper" href="#">Settings</a>
</li>
<li class="nav-item">
<a class="nav-link all-upper" href="#">Log Out</a>
</li>
</ul>
</div>
</nav>
所以我在导航栏的右侧有一些链接,在左侧有一个按钮。
但是当屏幕变小时,按钮和折叠菜单会改变它们的位置,如下所示:
没有按钮一切正常:
那么如何把物品放在原处呢?
【问题讨论】:
标签:
html
css
twitter-bootstrap
【解决方案1】:
@media screen and (max-width: 540px) {
.navbar-brand{
flex-grow: 2;
}
}
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.1.3/css/bootstrap.min.css" rel="stylesheet"/>
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
<a class="navbar-brand all-upper mb-1 h1 ml-1" href="#">Brand</a>
<div class="navbar-expand">
<button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link all-upper" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link all-upper" href="#">Settings</a>
</li>
<li class="nav-item">
<a class="nav-link all-upper" href="#">Log Out</a>
</li>
</ul>
</div>
</nav>
你可以试试这个吗?你只是把你的导航栏切换器放在错误的地方..
再试一次?这就是你想要的?
【解决方案2】:
<div class="navbar-expand">
<button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
</div>
div 中不应该有这个navbar-expand 类,因为您已经在导航标签中定义了navbar-expand-sm
【解决方案3】:
不需要额外的 CSS。只需更改按钮的位置并使用mr-auto 将其保持在左侧即可。
<nav class="navbar navbar-expand-sm navbar-dark bg-dark">
<a class="navbar-brand all-upper mb-1 h1 ml-1" href="#">Brand</a>
<div class="navbar-expand mr-auto">
<button class="btn btn-primary mr-3" onclick="goToTrip()">Button</button>
</div>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarToggle" aria-controls="navbarToggle" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarToggle">
<ul class="navbar-nav ml-auto">
<li class="nav-item">
<a class="nav-link all-upper" href="index.html">Home</a>
</li>
<li class="nav-item">
<a class="nav-link all-upper" href="#">Settings</a>
</li>
<li class="nav-item">
<a class="nav-link all-upper" href="#">Log Out</a>
</li>
</ul>
</div>
</nav>
演示:https://www.codeply.com/go/vTTFyRkyoF