Closed. This question is off-topic。它当前不接受答案。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我在stackoverflow和jquery示例中尝试了多种方法,但是无法在grav主题中运行它。当我单击侧栏上的项目时,页面刷新,并且侧栏滚动位置移至顶部。我希望滚动位置停留在最后单击的项目中。
更详细地说,
主题文件由两个主页组成; base.html.twig和sidebar.html.twig。它是一种文档主题。 sidebar.html.twig中的菜单和base.html.twig中的内容。当我更改内容中的滚动位置并刷新页面时,滚动位置保持我读取的内容,但侧边栏中的长菜单无法停留在活动项目上。
我认为,可以有两种孤立的方式。 Ajax菜单可能是用于保持滚动位置的解决方案或jquery脚本。
想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
2年前关闭。
我在stackoverflow和jquery示例中尝试了多种方法,但是无法在grav主题中运行它。当我单击侧栏上的项目时,页面刷新,并且侧栏滚动位置移至顶部。我希望滚动位置停留在最后单击的项目中。
更详细地说,
主题文件由两个主页组成; base.html.twig和sidebar.html.twig。它是一种文档主题。 sidebar.html.twig中的菜单和base.html.twig中的内容。当我更改内容中的滚动位置并刷新页面时,滚动位置保持我读取的内容,但侧边栏中的长菜单无法停留在活动项目上。
我认为,可以有两种孤立的方式。 Ajax菜单可能是用于保持滚动位置的解决方案或jquery脚本。
最佳答案
$(document).ready(function() {
setTimeout(function(){
console.log("scrolled --------------------------")
sidemenuitemintoview()
}, 100);
});
var sidemenuitemintoview = function() {
var a, b, i = 0;
a = document.getElementById("sidebar")
console.log("sidemenuitemintoview()")
if (!a || !a.getElementsByClassName) {return false;}
b = a.getElementsByClassName("active");
if (b.length < 1) {return false;}
while (!isIntoView(a, b[0])) {
i++
if (i > 1000) {break;}
a.scrollTop += 10;
}
}
function isIntoView(x, y) {
var a = x.scrollTop;
var b = a + window.innerHeight;
var ytop = y.offsetTop;
var ybottom = ytop + 140;
return ((ybottom <= b) && (ytop >= a));
}
关于javascript - 滚动位置如何在侧边栏中保持事件项目? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/48658603/
10-09 13:59