window.scrollTo()平滑跳转不是由onclick事件

时间:2018-05-09 23:28:49

标签: javascript css

有没有办法让window.scroll如果没有按钮的onclick事件触发,可以在vanilla js中顺利跳转到某个类?

if(i <0) {
  window.scrollTo(0, document.querySelector(".site-header- wrapper").offsetTop);
}

我试过像这样把东西放在一起,但坦率地说我不知道​​我在做什么

if(i <0) {
window.addEventListener("scroll", function() {
  var n = 0;
  var int = setInterval(function() {
    window.scrollTo(0, n);
    n -= 10;
    if (n <= document.querySelector(".site-header-wrapper").offsetTop) clearInterval(int);
  }, 20);
})
}

1 个答案:

答案 0 :(得分:2)

取决于您是否愿意在某些浏览器中省略平滑滚动,但您可以执行类似

的操作
body {
    display: -webkit-box;      /* OLD - iOS 6-, Safari 3.1-6 */
    display: -ms-flexbox;      /* TWEENER - IE 10 */
    display: -webkit-flex;     /* NEW - Chrome */
    display: flex;             /* NEW, Spec - Opera 12.1, Firefox 20+ */
}

这将在最新的Firefox和Chrome中顺畅滚动,但会立即在IE,Edge和Safari中跳转。

它与document.querySelector(".site-header-wrapper").scrollIntoView({ behavior: "smooth" }); 不完全相同,但可能是可接受的替代品。否则,您必须使用JavaScript管理动画,例如根据评论中的链接。

相关问题