首页 > 解决方案 > 如何防止我的页面每次加载时都滚动到最后?

问题描述

我正在创建一个单页网站,使用指向页面中特定部分 ID 的链接进行滚动,但是在重新加载页面后,它会自动向下滚动到底部(但并非每次,有时粘性菜单会消失并且页面会向上移动一点点少量)。

我看不到任何 JS/jQuery 函数这样做。我不想使用window.scrollTo(0,0);,因为它在重新加载时(显然)不会停留在同一部分,这就是我需要的。

还有一个我没有考虑过的问题吗?

我的导航:

var $navigationLinks = $('#navigation > a');
var $sections = $($(".section").get().reverse());
var menuHeight = document.getElementById('main-menu').offsetHeight;

var sectionIdTonavigationLink = {};
$sections.each(function() {
    var id = $(this).attr('id');
    sectionIdTonavigationLink[id] = $('#navigation > a[href=\\#' + id + ']');
});

function highlightNavigation() {
    var scrollPosition = $(window).scrollTop()+ menuHeight;
    $sections.each(function() {
        var currentSection = $(this);
        var sectionTop = currentSection.offset().top;

        if (scrollPosition >= sectionTop) {
            var id = currentSection.attr('id');
            var $navigationLink = sectionIdTonavigationLink[id];
            if (!$navigationLink.hasClass('active')) {
                $navigationLinks.removeClass('active');
                $navigationLink.addClass('active');
            }
            return false;
        }
    });
}

粘性菜单:

window.onscroll = function() {myFunction()};

var navbar = document.getElementById("main-menu");
var sticky = navbar.offsetTop;

function myFunction() {
    if (window.pageYOffset >= sticky) {
        navbar.classList.add("sticky")
    } else {
        navbar.classList.remove("sticky");
    }
}

标签: javascriptjqueryhtml

解决方案


推荐阅读