如何在具有 id 的容器下方向下滚动一定数量的像素?
How to scroll down by certain amount of pixels below a container with an id?
当事件被触发时,我有这样的事情:
window.location.href = "#my-elm";
并且我有一个具有该 ID 的 div,当事件被触发时,我的 window 当然会转到 div 位置,但我有一个固定的 header在页面顶部,高度约为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 完成。
像这样添加 scroll-margin-top
to the :target
选择器:
:target {
scroll-margin-top: 150px;
}
它会为每个锚元素从滚动容器的顶部边缘添加边距,如果出于某种原因你只想为 #my-elm
应用它,请将选择器从 :target
更改为#my-elm
当事件被触发时,我有这样的事情:
window.location.href = "#my-elm";
并且我有一个具有该 ID 的 div,当事件被触发时,我的 window 当然会转到 div 位置,但我有一个固定的 header在页面顶部,高度约为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 完成。
像这样添加 scroll-margin-top
to the :target
选择器:
:target {
scroll-margin-top: 150px;
}
它会为每个锚元素从滚动容器的顶部边缘添加边距,如果出于某种原因你只想为 #my-elm
应用它,请将选择器从 :target
更改为#my-elm