我正在使用Bootstrap 3,我有一个全屏幕的轮播图,紧接着是导航栏。当用户完全滚过轮播图后,导航栏会固定在顶部,这很好用。
但是现在,当用户稍微向下滚动一点,然后向上滚动时,导航栏不会回到原来的位置,它仍然固定在顶部。
以下是我的js代码:
我还创建了一个示例: http://jsfiddle.net/thqx9g9b/2/,以重现此问题。您可能需要点击滚轮,使导航栏固定在顶部,然后向下滚动一点,再向上滚动,才能重现此错误。
奇怪的是,我正在使用全屏jumbtron 进行相同的操作,但该bug并未出现。
更新:如果在.carousel类中添加“padding:55px”,则问题将消失。但是,如果我在carousel中使用图像,则会导致大边框。
以下是带有填充的已更新的fiddle:http://jsfiddle.net/thqx9g9b/3/ 这个问题在我的jumbotron版本中可行的原因是图像设置在父div上,并且填充没有引起边框问题。我尝试在carousel中的各种元素上放置填充,但要使其正常工作,必须放在父div上。是否有任何解决方法或我遗漏了什么?
但是现在,当用户稍微向下滚动一点,然后向上滚动时,导航栏不会回到原来的位置,它仍然固定在顶部。
以下是我的js代码:
$(function() {
var lastfixed = undefined,
spacerEl = undefined,
fixed = false,
ghostElHeight = 0;
$(document).on('scroll', function() {
console.log('scroll top : ' + $(window).scrollTop());
if ($(window).scrollTop() >= $(".carousel").outerHeight()) {
fixed = true;
if (fixed === lastfixed) return
$(".navbar").addClass("navbar-fixed-top");
ghostElHeight = $(".navbar").outerHeight()
if (!!!spacerEl) {
spacerEl = $(".navbar").after(
'<div class="navspacer" style="height:' + ghostElHeight + 'px"> </div>').next();
}
}
if ($(window).scrollTop() < $(".carousel").height() + ghostElHeight) {
fixed = false;
if (fixed === lastfixed) return
ghostElHeight = 0;
$(".navbar").removeClass("navbar-fixed-top");
!!spacerEl && spacerEl.remove();
spacerEl = undefined;
}
lastfixed = fixed;
});
});
奇怪的是,我正在使用全屏jumbtron 进行相同的操作,但该bug并未出现。
更新:如果在.carousel类中添加“padding:55px”,则问题将消失。但是,如果我在carousel中使用图像,则会导致大边框。
以下是带有填充的已更新的fiddle:http://jsfiddle.net/thqx9g9b/3/ 这个问题在我的jumbotron版本中可行的原因是图像设置在父div上,并且填充没有引起边框问题。我尝试在carousel中的各种元素上放置填充,但要使其正常工作,必须放在父div上。是否有任何解决方法或我遗漏了什么?