javascript - 如何让按钮将窗口滚动到一定高度

标签 javascript

我试图让窗口在单击按钮时实现平滑的滚动效果。 目前我有以下代码。

<div class="scroll-button" href="#thanks"><span></span>Scroll</div>

var scrollButton = document.querySelector('.scroll-button');
scrollButton.addEventListener("click", smoothScrollButton);

function smoothScrollButton() {
  var scrollTheWindowButton = document.querySelector('html, body');
  for (var i = 0; i <  scrollTheWindowButton.length; i++) {
    scrollTheWindowButton[i].animate([{scrollTop = this.offsetTop}], 500, 'linear' 
    )};
  }

我目前在 VSC 和控制台中没有看到任何错误,因此作为一个菜鸟,这使得调试有点困难。我尝试查看 MDN 上的 .animate() 函数,但不知道我是否取得了进展。

请帮忙?

最佳答案

无需 JS,只需插入 <a> 即可实现该效果标记在您的 html 文档中您希望屏幕在单击时滚动的部分的高度。您使用 <a> 的 href 属性标签来指示该部分的 id。

HTML 文件:

<body>
    <div id="section-foo"></div>
    ...
    <a href="#section-foo">Take me foo</a>
</body>

您可以围绕<a>构建一个包装器标记并在那里应用您的样式以获得一个漂亮的按钮(text-decoration: none, background-color: some-color, border-radius: 3px;等)。

编辑:

为了让屏幕真正平滑滚动,您需要添加 scroll-behavior: smooth;属性到 css 样式表中的 body 标记。

我的每张工作表上都有这个作为样板。

*{
  scroll-behavior: smooth;
}

关于javascript - 如何让按钮将窗口滚动到一定高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52809115/

相关文章:

javascript - '==' 和 '===' 之间是否存在显着的性能差异?

javascript - 在angularjs中从本地存储中检索对象数组

JavaScript、Chrome、文本框、空格键、退格键

javascript - 与 jQuery 的 $() 不同,由于 document.getElementById() 和 document.querySelector() 不返回节点,无法在 vanilla JS 上附加子项

javascript - D3淡入淡出功能圆图

javascript - 从具有特定参数的数组中检索对象

javascript - 使用带有 innerHTML 的 if 语句来替换内容,我的方法不起作用......完全

javascript - 如何禁用 jquery 数据表上的拖放

javascript - 向 JS 函数传递未知数量的参数

javascript - 关于javascript中的输入名称