scrollIntoView方法滚动当前元素,进入浏览器的可见区域

scrollIntoView方法滚动当前元素,进入浏览器的可见区域

el.scrollIntoView(); // 等同于el.scrollIntoView(true)
el.scrollIntoView(false);

//这个title-part元素将以平滑的滚动方式滚动到与视口底部齐平地方(有兼容性问题)
document.querySelector("#part").scrollIntoView({ block: 'end', behavior: 'smooth' })
//这个article-part元素将以平滑的滚动方式滚动到与视口顶部齐平地方(有兼容性问题)
document.querySelector("part").scrollIntoView({ block: 'start', behavior: 'smooth' })
//这个articleMU-part元素将木讷的瞬间滚动到与视口顶部齐平地方(无滚动动画效果)
document.querySelector("#part").scrollIntoView();//默认值就是true,可以不写
//这个titleMU-part元素将木讷的瞬间滚动到与视口底部齐平地方(无滚动动画效果)
document.querySelector("#part").scrollIntoView(false)

scrollIntoView()方法导致整个页面产生偏移

1.使用scrollTop代替scrollIntoView()
var target = document.getElementById("target");
target.parentNode.scrollTop = target.offsetTop;
target.parentNode.scrollTop = target.offsetTop - target.parentNode.offsetTop;
2.
var el = document.querySelector("yourElement");
window.scroll({top: el.offsetTop, behavior: 'smooth'});

添加新节点 DOM上移展现在视口

const listRef = useRef(null);

  useEffect(() => {
    listRef.current = document.querySelectorAll('.widget .dragItem');
  }, [document.querySelectorAll('.widget .dragItem')]);

  const addItem = (add) => {
    add({ url: '', logo: '', name: '' })
    setTimeout(() => {
      let newNode = listRef.current[listRef.current.length - 1];
      newNode.scrollIntoView({ block: "center", behavior: "smooth", inline: "center" })
    },500)
  }

猜你喜欢

转载自blog.csdn.net/m0_53574149/article/details/131807708