页面锚点,点击跳转到固定页面位置

313 阅读1分钟
  1. element.scrollToView() 可能会导致锚点位置不准确
  • 当页面有fixed顶部的布局时,由于fixed布局的元素脱离文档流,被scrollToView()的元素会被置顶到页面最顶部,导致部分被fixed布局的元素遮挡,因此不太适用。

  • 可用于页面没有fixed布局,常见的是顶部需要固定位置时可用element.scrollToView(),但是当点击的元素没有当前页面的高度(100vh)时,会出现整个页面上移的情况。

 // 找到锚点
 const anchorElement = document.getElementById(value);
 // 如果对应id的锚点存在,就跳转到锚点
 // **写法问题:会使整个页面上移**
 anchorElement.scrollIntoView({
          block: "start",
          behavior: "smooth"
  });
  // 解决
   behavior: 'smooth', block: 'nearest', inline: 'start'
  1. element.scroll() 方法比较通用,不管页面有何布局都可以用,计算元素离顶部的距离,然后向上移动对应的距离即可,推荐使用
     let element = document.getElementById('aaaa');
     let height = document.getElementById('aaaa').offsetTop; //计算需要向上移动的距离
      element.scroll({
        top: height, //向上移动的距离,如果有fixede布局, 直接减去对应距离
        behavior: 'smooth', // 平滑移动
      });

文档梳理来源blog.csdn.net/qq897319645…