javascript - 如何防止我的页面每次加载时都滚动到最后?
问题描述
我正在创建一个单页网站,使用指向页面中特定部分 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");
}
}
解决方案
推荐阅读
- python - 小数中的小整数错误,两个参数都应该是 Rational 实例
- list - 有没有办法在循环之外初始化一个列表,它是否被删除并在飞镖中重用?
- linux - 如何解决错误“do_package: ... not shipping in any package”?
- php - REAL HOMES THEME 问题 array_filter, bool given
- php - 使用密码作为参数保护 PHP
- r - 如何在多次出现的模式上剪切子字符串?
- cakephp - 无法保存关联 (hasOne) 数据
- html - 如果背景图像放在另一个标签中,CSS mix-blend-mode 不起作用
- hive - hive 脚本由于堆空间问题而失败,无法处理太多分区
- sql - 同一个对象上带有键锁(UPDLOCK、ROWLOCK、HOLDLOCK)的 SQL 死锁