我无法让粘性顶部导航栏与下一个元素重叠 bootstrap 4
I can't get sticky-top navbar to overlap with next element bootstrap 4
编辑:期望效果示例 here
第二次编辑:答案实际上很简单,我之前将页眉和页脚拆分到一个单独的文件中,不小心将导航栏放在了 body 标签之外。一旦我将它移到那里并在 body 标签中设置我的背景,然后使用带 属性 rgba(5,5,5,0.5) 的背景颜色选择器作为导航栏,一切都很好。
如您所见,我有一个导航栏和一个横幅。目前我正在为导航栏使用 sticky-top class。导航栏是透明的。
我希望导航栏在页面中跟随我,因为这是单页设计,导航栏是散列链接。但是,我还希望导航栏与下一个元素重叠并居中(就像我说的:透明)。该页面应从下一个元素中该背景图像的顶部开始,导航栏重叠。
我尝试了 position: absolute,它确实降低了导航栏,但随后它被固定并一直向左移动。
我也尝试了 线程中的建议,建议向导航栏添加自定义 class 并像这样增加顶部元素:
.sticky-offset {
top: 56px;
}
然而,这只会将它永久地向下推,并且在下一个元素上方仍然有一个白色 space。然后我试图减小车身尺寸,但也没有用。
我也尝试过将 overflow: auto 添加到导航栏 class,但没有任何效果。
这是我的 html:
<div id="navbar-main" class="navbar sticky-top sticky-offset navbar-
expand-md navbar-light px-auto mx-auto">
<!-- <a class="navbar-brand" href="#">Navbar</a> -->
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-center"
id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-item nav-link active" href="#section-banner">Home<span
class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-timeline">Our Journey</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-gallery">Party
Photos!!!</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-special">Special
Thanks</a>
</li>
<hr>
<li class="nav-item">
<a class="nav-item nav-link" href="logout_dummy.php">Logout</a>
</li>
</ul>
</div>
</div>
<section id="section-banner" class="parallax">
<h1>Test</h1>
</section>
CSS:
html {
scroll-behavior: smooth;
}
/* float clearing for IE6 */
* html .clearfix{
height: 1%;
overflow: visible;
}
/* float clearing for IE7 */
*+html .clearfix{
min-height: 1%;
}
/* float clearing for everyone else */
.clearfix:after{
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
font-size: 0;
}
.container {
width: 100%;
height: 100%;
}
/*
#section-carousel{
}
.carousel{
z-index: -99;
}
.carousel-indicators li{
background-color: black;
}
.carousel-indicators .active{
background-color: red;
}
*/
img.rounded-circle{
height: auto;
width: auto;
}
.license{
text-aling: center;
}
body {
height: 90%;
}
.navbar-nav > .nav-item > a {
position: relative;
}
header, p {
text-align: center;
}
html,
body {
height: 175% !important;
}
header {
height: 4em;
background: #845;
}
.parallax {
background-image: url("../../images/web_ready/welcome_banner.png");
background-repeat: no-repeat;
background-size: cover;
}
.parallax h1 {
text-align: center;
font-size: 4em;
padding: 15rem 0;
color: white;
background: rgba(29, 25, 29, 0.37);
font-family: "Trebuchet MS"
}
您需要使用 fixed-top
class 并通过 jquery 动态添加。诸如此类。
$( document ).ready( function () {
var nav = $(".navbar");
$(window).scroll(function() {
// Add class after 50px from the top
if ($(window).scrollTop() >= 50) {
nav.addClass("fixed-top");
} else {
nav.removeClass("fixed-top");
}
});
});
html,
body {
height: 175% !important;
}
.parallax {
background-image: url("https://source.unsplash.com/random/1280x1080");
background-repeat: no-repeat;
background-size: cover;
background-position: center center;
}
.parallax h1 {
text-align: center;
font-size: 4em;
padding: 15rem 0;
color: white;
background: rgba(29, 25, 29, 0.37);
font-family: "Trebuchet MS"
}
.header-absolute {
position: absolute;
left: 0;
top: 0;
right: 0;
width: 100%;
z-index: 1030;
}
.bg-transition {
transition: background .3s;
}
.fixed-top.bg-fixed {
background: rgba(26, 26, 26, 0.9) !important;
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<header class="header header-absolute">
<!-- Top Bar-->
<div class="top-banner bg-white text-dark p-2 text-center">Your top banner</div>
<!-- Navbar-->
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent bg-transition bg-fixed">
<!-- <a class="navbar-brand" href="#">Navbar</a> -->
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar Collapse -->
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav mx-auto">
<li class="nav-item active">
<a class="nav-item nav-link active" href="#section-banner">Home<span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-timeline">Our Journey</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-gallery">Party
Photos!!!</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-special">Special
Thanks</a>
</li>
<hr>
<li class="nav-item">
<a class="nav-item nav-link" href="logout_dummy.php">Logout</a>
</li>
</ul>
</div>
</nav>
</header>
<section id="section-banner" class="parallax">
<h1>Test</h1>
</section>
编辑:期望效果示例 here
第二次编辑:答案实际上很简单,我之前将页眉和页脚拆分到一个单独的文件中,不小心将导航栏放在了 body 标签之外。一旦我将它移到那里并在 body 标签中设置我的背景,然后使用带 属性 rgba(5,5,5,0.5) 的背景颜色选择器作为导航栏,一切都很好。
如您所见,我有一个导航栏和一个横幅。目前我正在为导航栏使用 sticky-top class。导航栏是透明的。
我希望导航栏在页面中跟随我,因为这是单页设计,导航栏是散列链接。但是,我还希望导航栏与下一个元素重叠并居中(就像我说的:透明)。该页面应从下一个元素中该背景图像的顶部开始,导航栏重叠。
我尝试了 position: absolute,它确实降低了导航栏,但随后它被固定并一直向左移动。
我也尝试了
.sticky-offset {
top: 56px;
}
然而,这只会将它永久地向下推,并且在下一个元素上方仍然有一个白色 space。然后我试图减小车身尺寸,但也没有用。
我也尝试过将 overflow: auto 添加到导航栏 class,但没有任何效果。
这是我的 html:
<div id="navbar-main" class="navbar sticky-top sticky-offset navbar-
expand-md navbar-light px-auto mx-auto">
<!-- <a class="navbar-brand" href="#">Navbar</a> -->
<button class="navbar-toggler" type="button" data-toggle="collapse"
data-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false"
aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<div class="collapse navbar-collapse justify-content-center"
id="navbarNav">
<ul class="navbar-nav">
<li class="nav-item active">
<a class="nav-item nav-link active" href="#section-banner">Home<span
class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-timeline">Our Journey</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-gallery">Party
Photos!!!</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-special">Special
Thanks</a>
</li>
<hr>
<li class="nav-item">
<a class="nav-item nav-link" href="logout_dummy.php">Logout</a>
</li>
</ul>
</div>
</div>
<section id="section-banner" class="parallax">
<h1>Test</h1>
</section>
CSS:
html {
scroll-behavior: smooth;
}
/* float clearing for IE6 */
* html .clearfix{
height: 1%;
overflow: visible;
}
/* float clearing for IE7 */
*+html .clearfix{
min-height: 1%;
}
/* float clearing for everyone else */
.clearfix:after{
clear: both;
content: ".";
display: block;
height: 0;
visibility: hidden;
font-size: 0;
}
.container {
width: 100%;
height: 100%;
}
/*
#section-carousel{
}
.carousel{
z-index: -99;
}
.carousel-indicators li{
background-color: black;
}
.carousel-indicators .active{
background-color: red;
}
*/
img.rounded-circle{
height: auto;
width: auto;
}
.license{
text-aling: center;
}
body {
height: 90%;
}
.navbar-nav > .nav-item > a {
position: relative;
}
header, p {
text-align: center;
}
html,
body {
height: 175% !important;
}
header {
height: 4em;
background: #845;
}
.parallax {
background-image: url("../../images/web_ready/welcome_banner.png");
background-repeat: no-repeat;
background-size: cover;
}
.parallax h1 {
text-align: center;
font-size: 4em;
padding: 15rem 0;
color: white;
background: rgba(29, 25, 29, 0.37);
font-family: "Trebuchet MS"
}
您需要使用 fixed-top
class 并通过 jquery 动态添加。诸如此类。
$( document ).ready( function () {
var nav = $(".navbar");
$(window).scroll(function() {
// Add class after 50px from the top
if ($(window).scrollTop() >= 50) {
nav.addClass("fixed-top");
} else {
nav.removeClass("fixed-top");
}
});
});
html,
body {
height: 175% !important;
}
.parallax {
background-image: url("https://source.unsplash.com/random/1280x1080");
background-repeat: no-repeat;
background-size: cover;
background-position: center center;
}
.parallax h1 {
text-align: center;
font-size: 4em;
padding: 15rem 0;
color: white;
background: rgba(29, 25, 29, 0.37);
font-family: "Trebuchet MS"
}
.header-absolute {
position: absolute;
left: 0;
top: 0;
right: 0;
width: 100%;
z-index: 1030;
}
.bg-transition {
transition: background .3s;
}
.fixed-top.bg-fixed {
background: rgba(26, 26, 26, 0.9) !important;
}
<script src="https://code.jquery.com/jquery-3.3.1.slim.min.js"
integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js"
integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js"
integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
<link href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" rel="stylesheet" />
<header class="header header-absolute">
<!-- Top Bar-->
<div class="top-banner bg-white text-dark p-2 text-center">Your top banner</div>
<!-- Navbar-->
<nav class="navbar navbar-expand-lg navbar-dark bg-transparent bg-transition bg-fixed">
<!-- <a class="navbar-brand" href="#">Navbar</a> -->
<button class="navbar-toggler" type="button" data-toggle="collapse" data-target="#navbarCollapse" aria-controls="navbarCollapse" aria-expanded="false" aria-label="Toggle navigation">
<span class="navbar-toggler-icon"></span>
</button>
<!-- Navbar Collapse -->
<div class="collapse navbar-collapse" id="navbarCollapse">
<ul class="navbar-nav mx-auto">
<li class="nav-item active">
<a class="nav-item nav-link active" href="#section-banner">Home<span class="sr-only">(current)</span></a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-timeline">Our Journey</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-gallery">Party
Photos!!!</a>
</li>
<li class="nav-item">
<a class="nav-item nav-link" href="#section-special">Special
Thanks</a>
</li>
<hr>
<li class="nav-item">
<a class="nav-item nav-link" href="logout_dummy.php">Logout</a>
</li>
</ul>
</div>
</nav>
</header>
<section id="section-banner" class="parallax">
<h1>Test</h1>
</section>