带边距的 scrollIntoView

新手上路,请多包涵

我有一个网页,我想在其中滚动到某个元素。

该部分通过使用 scrollIntoView 工作正常;但我想在元素上方添加一点空间( 20px 或其他东西)

我目前正在做这样的事情:

 const moveToBlue = () => {
  const blue = document.getElementById('blue')
  blue.scrollIntoView({ behavior: 'smooth', block: 'start', inline: 'start'});
};

但是,我想向上滚动 20px(请 在此处查看我的演示

这可能吗?

原文由 kodeaben 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 930
2 个回答

您始终可以使用 scrollTo 首先使用 getBoundingClientRect 获取元素坐标,然后添加滚动偏移并获取滚动边距。例如

const moveToBlue = () => {
  const blue = document.getElementById('blue');
  let position = blue.getBoundingClientRect();
  // scrolls to 20px above element
  window.scrollTo(position.left, position.top + window.scrollY - 20);
};

原文由 wizzfizz94 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题