【发布时间】:2015-09-20 01:34:51
【问题描述】:
我正在使用以下代码将菜单的位置更改为固定滚动:
var $stickyEl = $('#sticky-menu');
var elementBeforeHeight = $('.startHandle').height();
$window.on('scroll', function(){
if($(window).scrollTop() >= elementBeforeHeight){
$stickyEl.addClass('navbar-fixed-top');
$stickyEl.removeClass('navbar-static-top');
}
else{
$stickyEl.addClass('navbar-static-top');
$stickyEl.removeClass('navbar-fixed-top');
}
});
它可以工作,但它有一个小错误。更改的时刻会导致菜单后的内容跳到更靠近菜单的位置。我想这是某种默认行为。知道如何防止这种情况吗?
我想我应该设置与导航栏之前的 div 相关的填充。有没有办法做到这一点?我的目标是有图片然后滚动它并查看网站的其余部分。然后我希望我的导航栏固定并保持在顶部。
编辑:
这是我的html:
<header>
<a href="#sticky-menu" class="page-scroll">
<div name="startSection" class="content startHandle" id="startPhoto" data-stellar-background-ratio="0">
<img id="startHeader" class="col-md-8 col-xs-12" src="images/home_title.png">
</div>
</a>
</header>
<?php include 'include/fixed_menu.php' ?>
<div class="content container newAlbumSection" id="startContent">
further content...
</div>
fixed_menu.php:
<div id="sticky-menu">
<nav class="navbar navbar-static-top navbar-default" role="navigation">
<div class="container">
<div class="navbar-header">
<button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-ex1-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
</div>
<div class="collapse navbar-collapse navbar-ex1-collapse">
<ul class="nav navbar-nav margins-navbar">
<!-- Hidden li included to remove active class from about link when scrolled up past about section -->
<li class="hidden">
<a href="#"></a>
</li>
<li>
<a href="/bg/lc/">HOME</a>
</li>
<li>
<a href="/bg/lc/bio/">BIO</a>
</li>
<li>
<a href="/bg/lc/discography/">DISCOGRAPHY</a>
</li>
<li>
<a href="/bg/lc/press/">PRESS</a>
</li>
<li>
<a href="/bg/lc/video">VIDEO</a>
</li>
<li>
<a href="/bg/lc/photo">PHOTO</a>
</li>
<li>
<a href="/bg/lc/contact">CONTACT</a>
</li>
</ul>
</div>
<!-- /.navbar-collapse -->
</div>
<!-- /.container -->
</nav>
</div>
css:
body {
width: 100%;
height: 100%;
font-size: 14px;
}
.content {
background-attachment: fixed;
}
#startPhoto {
background: url("../images/home_photo.png") no-repeat;
background-size: 100% 100%;
height: 57em;
}
#startHeader{
position: absolute;
padding-top: 0;
left: 0.5em;
bottom: 0;
}
【问题讨论】:
-
如果它是实时的,你能创建一个演示或提供一个链接吗?
-
好的,我马上编辑我的帖子
-
我刚刚添加了 html css 并链接到我的帖子
-
看起来你可以欣赏一下 jQuery 的 .toggleClass() api.jquery.com/toggleclass
-
我知道 .toggleClass(),我只是没有看到任何使用它的方法。我使用了@Shikkediel 解决方案,其中包括使用.toggleClass()。感谢您的反馈:)
标签: jquery html css twitter-bootstrap twitter-bootstrap-3