如何在带有id的容器下方向下滚动一定数量的像素?
当一个事件被触发时,我有这样的事情:
window.location.href = "#my-elm";
我有一个具有该 id 的 div,当事件被触发时,我的窗口当然会滚动到 div 位置,但是我在页面顶部有一个固定的标题,高度约为 150px,所以我的 div 的一部分不是可见的..
我想要做的是当我的事件被触发时我将向下滚动到锚点位置 + 150 px
我试图在我的页面上添加这个,我明白这是要观察我的哈希哈希(我的锚点改变??),这将滚动额外的 150 像素,但没有用
window.addEventListener("hashchange", function () {
window.scrollTo(window.scrollX, window.scrollY + 150);
});
有任何想法吗 ?
任何帮助将非常感激。
编辑 :
提供的答案适用于 Firefox、Edge、Chrome、Opera、Safari +11
对于 Safari -11 这不起作用,它仅适用于最新版本,这很糟糕,您必须实施其他解决方案来修复 Safari BUG
回答
它只能用 CSS 来完成。
将 a 添加scroll-margin-top到:target选择器中,如下所示:
:target {
scroll-margin-top: 150px;
}
它将为每个锚元素从滚动容器的顶部边缘添加一个边距,如果您只是#my-elm出于某种原因想应用它,请将选择器从更改:target为#my-elm