固定标题和跳转链接?scroll-margin-top 是解决方案

Avatar of Chris Coyier
Chris Coyier

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费信用额度!

问题:您点击一个跳转链接,例如 <a href="#header-3">Jump</a>,它链接到类似 <h3 id="header-3">Header</h3> 的内容。这完全没问题,直到您在页面顶部有一个 position: fixed; 标题遮挡了您尝试链接到的标题!

固定标题有一个讨厌的习惯,就是隐藏您尝试链接到的元素。

曾经有 各种各样的疯狂黑客 来解决这个问题。事实上,在我写这篇文章的时候,在 CSS-Tricks 的设计中,我就像, “ *随它去吧,我将在我的文章内标题上设置一个很大的 padding-top,因为我不介意那个外观。* ”

但是现在,实际上有一种非常直接的方法来处理 CSS 中的这个问题。

h3 {
  scroll-margin-top: 5rem; /* whatever is a nice number that gets you past the header */
}

我们有一篇关于它的年鉴文章,其中包括浏览器支持,基本上所有浏览器都支持。它经常与 滚动捕捉 结合在一起讨论,但我发现这种用例更实用。

这是一个简单的演示

相关地,Chrome 发布的那个奇怪的(但很酷的)“文本片段”链接会带您到 页面中间,我认为这很好。