12

无论如何使用javascript自动滚动到具有某个div类的第一个可见元素?

谢谢!

4

2 回答 2

37

你应该能够使用这样的东西:

$('html, body').animate({
    scrollTop: $('.class:visible:first').offset().top
}, 1000);

演示:http: //jsfiddle.net/Blender/xUw54/2/

于 2012-09-25T21:42:41.693 回答
1

可以用普通的 JS 轻松完成:

const items = container.getElementsByClassName('active');
const visible = [...items].filter((el) => {
  // jQuery-like :visible selector
  return !!( el.offsetWidth || el.offsetHeight || el.getClientRects().length );
});

if (visible.length > 0) {
  container.scrollTo({
    top: items[0].offsetTop,
    behavior: 'smooth'
  });
}

这假设:

  • container是您的可滚动容器,如果您要滚动整个页面,可以用document&替换。window
  • 您正在寻找具有active类名的第一个项目。
  • 您想要平滑的滚动,behavior: 'smooth'如果您希望滚动立即在一次跳转中发生,请删除配置。

https://developer.mozilla.org/en-US/docs/Web/API/Element/scrollTo

于 2020-02-10T15:51:19.700 回答