Javascript 非画布导航问题
我做了这个离开画布的导航,一切都很好,除了当导航关闭时,它一直到顶部,我希望它保持在打开的位置。当它打开时,给主体一个滚动位置的边距,关闭后,给主体一个Javascript 非画布导航问题,javascript,jquery,navigation,Javascript,Jquery,Navigation,我做了这个离开画布的导航,一切都很好,除了当导航关闭时,它一直到顶部,我希望它保持在打开的位置。当它打开时,给主体一个滚动位置的边距,关闭后,给主体一个边距:0。帮助任何人。下面是让它更清楚的提琴: 编辑 关键是滚动应该被禁用,但在导航打开时可见。遵循以下步骤: 在站点的任何位置打开导航 导航打开,页面停留在同一位置,不会跳转到任何地方 导航打开时禁用滚动 关闭导航,启用滚动,页面仍在同一位置,没有跳跃 拆下管路 var scrl = $(this).scrollTop(); 如果有人需要的
边距:0
。帮助任何人。下面是让它更清楚的提琴:
编辑
关键是滚动应该被禁用,但在导航打开时可见。遵循以下步骤:
- 在站点的任何位置打开导航
- 导航打开,页面停留在同一位置,不会跳转到任何地方
- 导航打开时禁用滚动
- 关闭导航,启用滚动,页面仍在同一位置,没有跳跃
var scrl = $(this).scrollTop();
如果有人需要的话,你可以呆在打开的地方,我想,只需要几个变量来存储滚动位置和嵌套对象。这是最后一把小提琴:
他还应该注释掉第7行:$('body').scrollTop(scrl).css('margin-top','0');注释后,这一行将不可能滚动到topYeah,但它可以滚动,这是我不想要的。@OlegYudovich,他仍然可以手动滚动。他不需要该行,请执行以下步骤:1.删除该行2.向下滚动3.切换导航4.关闭导航5.尝试手动向上滚动。看看会发生什么
var navigation = {};
function toggleNav() {
navigation.scrl = $('body').scrollTop();
if ($('#inner-wrap').hasClass('opened')) {
$('#inner-wrap').removeClass('opened');
$('#close-nav').hide();
$('body').removeClass('no-scroll');
$('body').css('top', '0').scrollTop(here);
} else {
$('#nav').show();
$('#inner-wrap').addClass('opened');
$('#close-nav').show();
$('body').css('top', - navigation.scrl + 'px').addClass('no-scroll');
}
}
function openNav() {
$('#nav').show();
$('#inner-wrap').addClass('opened');
$('#close-nav').show();
$('body').css('top', - navigation.scrl + 'px').addClass('no-scroll');
alert(navigation.scrl);
}
function closeNav() {
$('#inner-wrap').removeClass('opened');
$('#close-nav').hide();
$('body').removeClass('no-scroll');
$('body').css('top', '0').scrollTop(navigation.scrl);
alert(navigation.scrl);
}
$('#toggle-nav').click(function () {
toggleNav();
});
$("#close-nav").click(function(){
closeNav();
});