Javascript 在导航栏固定在滚动条上后,如何阻止内容跳转?

Javascript 在导航栏固定在滚动条上后,如何阻止内容跳转?,javascript,jquery,html,css,Javascript,Jquery,Html,Css,我有一个导航栏,位于登录页下方约1/3处,一旦用户滚动到导航栏,导航栏就会变粘,并固定在顶部 我遇到的问题是,一旦脚本启动,导航栏变粘,下面的内容就会跳起来,被新固定的导航栏部分隐藏 我希望这是一个平稳的过渡,但这个小小的跳跃是令人不安的 有没有办法解决这个问题 $(函数(){ var distance=$('.desktop nav').offset().top, $window=$(window); $window.scroll(函数(){ $('.desktop nav').toggle

我有一个导航栏,位于登录页下方约1/3处,一旦用户滚动到导航栏,导航栏就会变粘,并固定在顶部

我遇到的问题是,一旦脚本启动,导航栏变粘,下面的内容就会跳起来,被新固定的导航栏部分隐藏

我希望这是一个平稳的过渡,但这个小小的跳跃是令人不安的

有没有办法解决这个问题

$(函数(){
var distance=$('.desktop nav').offset().top,
$window=$(window);
$window.scroll(函数(){
$('.desktop nav').toggleClass('fixedtop',$window.scrollTop()>=距离)
});
});
ul{
文本对齐:居中;
填充顶部:20px;
垫底:15px;
左侧填充:0;
背景色:白色;
}
.fixedtop{
位置:固定;
排名:0;
宽度:100%;
背景色:白色;
高度:50px;
盒影:0 5px 60px rgba(0,0,0,0.08);
边际上限:0px;
}
#公文包{高度:200vh;}


这里有几个选项

首先,根据您的支持需求,您可以简单地使用position:sticky(粘在所讨论的元素上)。在不受支持的浏览器上,这会返回到位置:相对。如果选择此路线,则不需要fixedTop类

其次,您可以继续使用相同的方法,仅将导航栏绝对定位在其父对象上,并在父对象上设置一个填充顶部,以便内容不会跳转。当元素变粘时,填充将保留其他内容的位置。

试试这个

$(函数(){
var distance=$('.desktop nav').offset().top,
$window=$(window);
$window.scroll(函数(){
var dh=$('.desktop nav').height();
$('.desktop nav').toggleClass('fixedtop',$window.scrollTop()>=距离,“easeOutSine”);
if($('.desktop nav').hasClass('fixedtop')){
$('body').css('margin-top',dh+dh);
}否则{
$('body').css('margin-top',0);
}
});
});
正文{
保证金:0;
} 
保险商实验室{
文本对齐:居中;
填充顶部:20px;
垫底:15px;
左侧填充:0;
背景色:白色;
}
.fixedtop{
位置:固定;
排名:0;
宽度:100%;
背景色:白色;
/*高度:50px*/
盒影:0 5px 60px rgba(0,0,0,0.08);
边际上限:0px;
}

栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出 栈溢出