Bootstrap导航栏100%宽度不起作用。

8
在我的Bootstrap导航栏中,我试图使其在页面顶部时也能够占满整个页面,但是我已经尝试在“.navbar-wrapper”、 “navbar” 和 “navbar-default” 上设置宽度为100%,但由于某些原因,导航栏仍然无法占满整个页面。
实例展示:
这是我的Codepen 代码视图 这是我的Codepen 完整视图 问题:如何使我的导航栏宽度为100%,以便它可以占满整个页面?
CSS:
/* Special class on .container surrounding .navbar, used for positioning it into place. */
.navbar-wrapper {
    position: absolute;
    top: 0;
    right: 0;
    width: 100% !important;
    left: 0;
    z-index: 20;
}

/* Flip around the padding for proper display in narrow viewports */
.navbar-wrapper > .container {
    padding-right: 0;
    padding-left: 0;
}

.navbar-wrapper .navbar {
    padding-right: 15px;
    padding-left: 15px;
    width: 100% !important;
}

.navbar-inverse {
  width: 100% !important;
    background-color: rgba(0, 0, 0, 0.5) !important;
}

.navbar-inverse .nav > li > a {
    color: #FFFFFF;
}

.navbar-inverse .nav > li > a:hover {
    background: none;
}

.navbar-brand a {
    color: #FFFFFF;
}

.main-header-background {
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center; 
    background-image: url('./images/stars/img-stars-2.jpg');
    height: 620px;
    width: 100%;
    margin-bottom: 60px;
}

HTML

<div class="navbar-wrapper">
<div class="container">

<nav class="navbar navbar-inverse">
<!-- Brand and toggle get grouped for better mobile display -->
<div class="navbar-header">
<button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#bs-example-navbar-collapse-1">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<div class="navbar-brand">
<a href="#">Brand</a>
</div>
</div>

<!-- Collect the nav links, forms, and other content for toggling -->
<div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">

<ul class="nav navbar-nav">
<li class="active"><a href="#">Link <span class="sr-only">(current)</span></a></li>
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
<li class="divider"></li>
<li><a href="#">One more separated link</a></li>
</ul>
</li>
</ul>

<ul class="nav navbar-nav navbar-right">
<li><a href="#">Link</a></li>
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-expanded="false">Dropdown <span class="caret"></span></a>
<ul class="dropdown-menu" role="menu">
<li><a href="#">Action</a></li>
<li><a href="#">Another action</a></li>
<li><a href="#">Something else here</a></li>
<li class="divider"></li>
<li><a href="#">Separated link</a></li>
</ul>
</li>
</ul>

</div><!-- /.navbar-collapse -->
</nav>
</div>
</div>

<div class="main-header-background">
</div>  

1
你需要这个吗?http://codepen.io/anon/pen/GJmqdL - Khanh TO
@KhanhTO,你做到了我想要的。你能否把它作为答案并解释一下你做了什么? - user4419336
1
应该与以下答案类似,将其更改为 container-fluid,并将左右填充设置为 0:.navbar-wrapper > .container-fluid { padding-right: 0; padding-left: 0; }。我不确定是否应该发布为答案。 - Khanh TO
4个回答

8

我正在使用.container-fluid,但导航栏仍然在左右两侧留有一些空间。 - Inzimam Tariq IT
1
亲爱的@InzimamTariqIT,container-fluid类默认具有一些侧边填充,也许这就是你的意思?如果是这样,也许这个链接可以帮到你:https://dev59.com/JILba4cB1Zd3GeqPgI0Y - Ivan Sivak

4
你可以通过让容器继承“.navbar-wrapper”来使导航栏的宽度延伸到整个页面。你可能还想去掉“.navbar-wrapper .navbar”中设置的填充。以下样式对我有用:请参阅codpen:http://codepen.io/JordanLittell/pen/wadWxv /*特殊类在包围.navbar的.container上,用于定位*/。
.navbar-wrapper {
    position: absolute;
    top: 0;
    right: 0;
    width: 100% !important;
    left: 0;
    z-index: 20;
}

/* Flip around the padding for proper display in narrow viewports */
.navbar-wrapper > .container {
    padding-right: 0;
    padding-left: 0;
    width: inherit;
}

.navbar-wrapper .navbar {
    width: 100% !important;
}

.navbar-inverse {
  width: 100% !important;
    background-color: rgba(0, 0, 0, 0.5) !important;
  border-radius: 0;
}

.navbar-inverse .nav > li > a {
    color: #FFFFFF;
}

.navbar-inverse .nav > li > a:hover {
    background: none;
}

.navbar-brand a {
    color: #FFFFFF;
}

.main-header-background {
    background-size: 100% 100%;
    background-repeat: no-repeat;
    background-position: center; 
    background-image: url('http://www.riwakawebsitedesigns.com/external/images/stars/img-stars-2.jpg');
  height: 620px;
  width: 100%;
  margin-bottom: 60px;
}

3
您应该使用类 container-fluid 而不是 container
  • 对于不同的屏幕大小(xs,sm,md,lg), container 具有预定义的宽度值。

  • container-fluid 填充可用宽度。

此外, container 有一些填充应用,并且通常与具有相反边距的 row 一起使用。

因此,如果您希望实现全宽度,则必须将导航栏包装在行中(在容器内部),或者根本不使用 container


0

我知道这是一个老问题,但现在仍然很相关,特别是在现代CSS框架的世界中!

我在导航栏上使用了我的“row”类,因为我想使用Bootstrap的网格系统来控制导航栏内的元素。

所以它看起来像这样:

<nav class="navbar row"></nav>

我需要做的是从导航栏中删除行并将其放置在div内。所以它变成了:

<nav class="navbar> <div class="row"> </div> </nav>

这似乎是Bootstrap的网格系统本身存在问题。希望这能帮助到任何人!


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接