如何在带有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


以上是如何在带有id的容器下方向下滚动一定数量的像素?的全部内容。
THE END
分享
二维码
< <上一篇
下一篇>>