我有一个包含一些博客项目的页面。这些项目前面有锚点,有时我直接使用#my-item
.
问题是,我在顶部有一个固定菜单,该菜单现在覆盖了标题,因为锚链接紧贴我的浏览器顶部。
是否可以将其向下推(例如 100 像素)?我可以想到一种 jQuery 方式,click()
但正如我所说,有时我来自另一个页面。
我有一个包含一些博客项目的页面。这些项目前面有锚点,有时我直接使用#my-item
.
问题是,我在顶部有一个固定菜单,该菜单现在覆盖了标题,因为锚链接紧贴我的浏览器顶部。
是否可以将其向下推(例如 100 像素)?我可以想到一种 jQuery 方式,click()
但正如我所说,有时我来自另一个页面。
您可以通过向目标添加负上边距来更改锚点跳跃的行为方式,并使用相同数量的上边距进行补偿。浏览器会在点击时跳转到负边距的位置,但目标仍然有正确的间距。
这是一个示例 jsfiddle
CSS
article {
display: block;
margin-top: -50px;
padding-top: 50px;
}
这是一个旧线程,但由于它仍在搜索结果中弹出,因此应注意当前 CSS 提供了scroll-margin-top
用于该目的的属性,该属性自 2021 年起得到广泛支持。您可以简单地使用
#my-item { scroll-margin-top: 100px; }
在不影响边距和填充的情况下将项目向下推。
为什么不给元素添加一些填充?
<h3 style="padding-top: 100px;">The subheading</h3>
浏览器将向下滚动,直到视口与元素的顶部边缘相遇,并且元素在内容和边框之间有 100px 的空间。
最简单的方法是在内容顶部添加边距或填充。考虑这个 HTML:
<a name="post1234"></a>
<article>
Lorem ipsum...
</article>
当哈希指向#post1234
的链接将被定位在屏幕的顶部。所以只需在文章顶部添加填充/边距:
article { padding-top: 100px; }
解决方案:
为您添加填充a
a.anchor{
position: relative;
padding-top: 100px;
width:1px;
display: block;
}
谢谢
如果有人想知道如何下推页面上所有锚点的跳转目标,这里是:
/* all anchors and all elements with the anchor class */
a, .anchor { margin-top: -2em; padding-top: 2em; }
/* all anchors with an href attribute */
a[href] { margin-top:0; padding-top: 0; }
您也可以使用margin-top:unset;
而不是margin-top:0;
如果你真的感觉很危险,你可能会使用它*[id]
并将其应用于所有带有 id 的东西。但我可能不会这样做。我不知道。试一试。在野外散步。
这里的其他答案似乎包括显示设置,但我看不出这有什么必要或有帮助。