页面滚动到顶部后返回滚动位置

时间:2015-03-28 14:13:48

标签: javascript jquery scroll position

我试图在小型设备上点击相关按钮时只显示侧边栏,但我遇到了一些困难。

我找到了一种方法来切换它的类,使其在点击时显示/显示,并在完成后自动滚动页面返回顶部,这样侧面菜单的顶部将显示给观看者,无论哪个部分他们当时正在浏览的页面。 但是,我觉得很难将这些结合起来,以便在侧面菜单消失之后使页面返回到访问者所在的滚动点。你能帮我解决这个问题吗?

HTML:

<div class="col-md-2" role="navigation">
    <ul class="nav" id="sidemenu">
      <li><a href="#">Lorem ipsum dolo</a></li>
      <li><a href="#">Lorem ipsum dolo</a></li>
      <li><a href="#">Lorem ipsum dolo</a></li>       
    </ul>
</div> 

JS:

$('#sidebutton').click(function() {
$('#sidemenu').toggleClass("current") && $('html,body').scrollTop(0);
$('.nodisplay').toggleClass("hidden");
});

CSS(以防万一):

 #sidemenu, .hidden {  display: none; }
 #sidemenu.current { display:block; }

2 个答案:

答案 0 :(得分:0)

当用户点击按钮显示侧边栏时抓取滚动位置,您可以将其存储在localStorage上,然后当侧边栏关闭时滚动到存储位置。

以下是您将如何抓取它的示例,当您要显示侧边菜单时执行此操作:

var currentScrollPosition = $('body')[0].scrollTop;
localStorage.setItem('myapp-current-top', currentScrollPosition);

然后,当您想要将滚动返回到该位置时,您只需将该值传递给scrollTop()函数,如下所示:

$('body').scrollTop(localStorage.getItem('myapp-current-top'));

我希望它可以帮到你。

答案 1 :(得分:0)

当隐藏菜单时,将当前滚动位置保存到某处(local / sessionStorage,variable,where),并滚动到顶部。如果未隐藏菜单,请滚动至您之前保存的位置:

var scrollTo;
var prevScrolPos;

$('#sidebutton').click(function () {

    if (!$('#sidemenu').hasClass("current")) {
        // if the menu is hidden, save the current scroll position and scroll to top
        prevScrolPos = $('body').scrollTop();
        scrollTo = 0;
    } else {
        // if the menu is not hidden, scroll to the saved position
        scrollTo = prevScrolPos;
    }

    $('#sidemenu').toggleClass("current") && $('html,body').scrollTop(scrollTo);
    $('.nodisplay').toggleClass("hidden");

});

演示:http://jsfiddle.net/o7btkgog/