[英]Navbar makes content jump when position is changed to fixed on scroll past
当我滚动导航并实现导航栏时,我一直试图使其导航栏保持顶部。 唯一的问题是,当执行导航栏到固定位置的过渡时,我的内容就会启动。
这是此行为的示例: http : //jsfiddle.net/7HHa5/4/
的JavaScript
window.onscroll = changePos;
function changePos() {
var header = document.getElementById("header");
if (window.pageYOffset > 70) {
header.style.position = "absolute";
header.style.top = pageYOffset + "px";
} else {
header.style.position = "";
header.style.top = "";
}
}
我正在使用bootstrap和jQuery。
如何避免这种行为?
当您将标题设置为position: absolute
,它将留下一个空白空间,该空白空间将由内容填充。 标头固定后,您需要在内容顶部添加一个空白,如下所示:
window.onscroll = changePos;
function changePos() {
var header = document.getElementById("header");
var content = document.getElementById("content");
if (window.pageYOffset > 70) {
header.style.position = "absolute";
header.style.top = pageYOffset + "px";
content.style.marginTop = '55px'
} else {
header.style.position = "";
header.style.top = "";
content.style.marginTop = '0'
}
}
有关示例,请参见http://jsfiddle.net/2EhLs/1/ 。
由于您已经在使用Bootstrap,因此应考虑使用内置的Affix功能。
$('#nav-wrapper').height($("#nav").height());
$('#nav').affix({
offset: { top: $('#nav').offset().top }
});
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.