Bootstrap 4:如何让top fixed navbar停留在容器内不拉伸?
Bootstrap 4: How to make top fixed navbar stay in container and not stretch?
很抱歉,我的问题可能与 this:
重复
Bootstrap fixed navbar inside div 或者这个:
Twitter Bootstrap: How to make top fixed navbar stay in container and not stretch?
或许多类似的,但三年过去了,Bootstrap 几乎将其版本从第 2 更新到第 4,但问题仍然存在。
所以我正在寻找一些优雅而简单的方法来使固定导航栏留在内部 parents div.container.
这是我从官方文档中复制并稍作修改的代码:
<div class="container">
<nav class="navbar navbar-fixed-top navbar-light bg-faded">
<button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse"
data-target="#navbarResponsive" aria-controls="navbarResponsive"
aria-expanded="false" aria-label="Toggle navigation">
</button>
<div class="collapse navbar-toggleable-md" id="navbarResponsive">
<a class="navbar-brand" href="#">
<img src="" width="30" height="30" class="d-inline-block align-top" alt="">Navbar
</a>
<ul class="nav navbar-nav float-md-right">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</nav>
</div>
编辑 - 我错误地给出了 Bootstrap 3 答案而不是 Bootstrap 4。
<nav class="navbar navbar-fixed-top navbar-light bg-faded">
<div class="container">
<button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive"
aria-expanded="false" aria-label="Toggle navigation"></button>
<div class="collapse navbar-toggleable-md" id="navbarResponsive">
<a class="navbar-brand" href="#"><img src="favicon1.png" width="30" height="30" class="d-inline-block align-top" alt=""> Navbar</a>
<ul class="nav navbar-nav float-md-right">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="next">Head</div>
</div>
您想将 "container" div 放在您的导航栏中。
感谢您的所有回答,但我终于在这里找到了答案:Fixed position but relative to container
这个习惯 CSS 真的很有帮助:
.container {
padding: 0px;
}
nav.navbar {
width: inherit;
left: 50%;
transform: translateX(-50%);
}
这有点棘手。
除了将 <div class="container"></div>
放入 nav.navbar
之外,我还必须使用以下内容 CSS 以便切换器和徽标在移动设备上不会重叠:
@media (max-width: 767px) {
.navbar .container {
width: 100%;
}
}
我的导航栏代码如下所示(通用):
<nav class="navbar navbar-toggleable-md fixed-top navbar-light bg-faded">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="{{ home_url('/') }}">
<img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt=""> SITENAME
</a>
</div>
<div class="collapse navbar-collapse " id="navbarSupportedContent">
<ul class="nav navbar-nav float-md-right">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
我的导航栏代码看起来像这样(对于 wordpress):
<nav class="navbar navbar-toggleable-md fixed-top navbar-light bg-faded">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="{{ home_url('/') }}">
<img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt="">
{{ get_bloginfo('name', 'display') }}
</a>
</div>
<div class="collapse navbar-collapse " id="navbarSupportedContent">
@if (has_nav_menu('primary_navigation'))
{!! wp_nav_menu(['theme_location' => 'primary_navigation', 'walker' => new wp_bootstrap_navwalker(), 'menu_class' => 'nav navbar-nav mr-auto']) !!}
@endif
</div>
</div>
</nav>
我发现最简单的解决方案是从 <nav>
元素中删除 .navbar-fixed-top class 并将其应用于包裹 [=11] 的 <div class="container">
=].此解决方案不需要任何自定义 CSS 并且可以跨设备使用。
<div class="container fixed-top">
<nav class="navbar navbar-light bg-faded">
/*ur custom css*/
.container-fluid{
background-color: black;
}
<div class="container-fluid">
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark ">
<div class="container">
<a class="navbar-brand inline-flex items-center" href="{{ home_url('/') }}">
<img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt="">
{{ get_bloginfo('name', 'display') }}
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
</div>
很抱歉,我的问题可能与 this:
重复
Bootstrap fixed navbar inside div 或者这个:
Twitter Bootstrap: How to make top fixed navbar stay in container and not stretch?
或许多类似的,但三年过去了,Bootstrap 几乎将其版本从第 2 更新到第 4,但问题仍然存在。
所以我正在寻找一些优雅而简单的方法来使固定导航栏留在内部 parents div.container.
这是我从官方文档中复制并稍作修改的代码:
<div class="container">
<nav class="navbar navbar-fixed-top navbar-light bg-faded">
<button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse"
data-target="#navbarResponsive" aria-controls="navbarResponsive"
aria-expanded="false" aria-label="Toggle navigation">
</button>
<div class="collapse navbar-toggleable-md" id="navbarResponsive">
<a class="navbar-brand" href="#">
<img src="" width="30" height="30" class="d-inline-block align-top" alt="">Navbar
</a>
<ul class="nav navbar-nav float-md-right">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</nav>
</div>
编辑 - 我错误地给出了 Bootstrap 3 答案而不是 Bootstrap 4。
<nav class="navbar navbar-fixed-top navbar-light bg-faded">
<div class="container">
<button class="navbar-toggler hidden-lg-up" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive"
aria-expanded="false" aria-label="Toggle navigation"></button>
<div class="collapse navbar-toggleable-md" id="navbarResponsive">
<a class="navbar-brand" href="#"><img src="favicon1.png" width="30" height="30" class="d-inline-block align-top" alt=""> Navbar</a>
<ul class="nav navbar-nav float-md-right">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
<div class="container">
<div class="next">Head</div>
</div>
您想将 "container" div 放在您的导航栏中。
感谢您的所有回答,但我终于在这里找到了答案:Fixed position but relative to container
这个习惯 CSS 真的很有帮助:
.container {
padding: 0px;
}
nav.navbar {
width: inherit;
left: 50%;
transform: translateX(-50%);
}
这有点棘手。
除了将 <div class="container"></div>
放入 nav.navbar
之外,我还必须使用以下内容 CSS 以便切换器和徽标在移动设备上不会重叠:
@media (max-width: 767px) {
.navbar .container {
width: 100%;
}
}
我的导航栏代码如下所示(通用):
<nav class="navbar navbar-toggleable-md fixed-top navbar-light bg-faded">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse" data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="{{ home_url('/') }}">
<img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt=""> SITENAME
</a>
</div>
<div class="collapse navbar-collapse " id="navbarSupportedContent">
<ul class="nav navbar-nav float-md-right">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
我的导航栏代码看起来像这样(对于 wordpress):
<nav class="navbar navbar-toggleable-md fixed-top navbar-light bg-faded">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggler navbar-toggler-right" type="button" data-toggle="collapse"
data-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<a class="navbar-brand" href="{{ home_url('/') }}">
<img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt="">
{{ get_bloginfo('name', 'display') }}
</a>
</div>
<div class="collapse navbar-collapse " id="navbarSupportedContent">
@if (has_nav_menu('primary_navigation'))
{!! wp_nav_menu(['theme_location' => 'primary_navigation', 'walker' => new wp_bootstrap_navwalker(), 'menu_class' => 'nav navbar-nav mr-auto']) !!}
@endif
</div>
</div>
</nav>
我发现最简单的解决方案是从 <nav>
元素中删除 .navbar-fixed-top class 并将其应用于包裹 [=11] 的 <div class="container">
=].此解决方案不需要任何自定义 CSS 并且可以跨设备使用。
<div class="container fixed-top">
<nav class="navbar navbar-light bg-faded">
/*ur custom css*/
.container-fluid{
background-color: black;
}
<div class="container-fluid">
<nav class="navbar fixed-top navbar-expand-lg navbar-dark bg-dark ">
<div class="container">
<a class="navbar-brand inline-flex items-center" href="{{ home_url('/') }}">
<img src="/assets/brand/bootstrap-solid.svg" width="30" height="30" class="d-inline-block align-top" alt="">
{{ get_bloginfo('name', 'display') }}
</a>
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarSupportedContent"
aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse" id="navbarSupportedContent">
<ul class="navbar-nav ml-auto">
<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="#">Link</a>
</li>
<li class="nav-item">
<a class="nav-link" href="#">Link</a>
</li>
</ul>
</div>
</div>
</nav>
</div>