- 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'
- element.scroll() 方法比较通用,不管页面有何布局都可以用,计算元素离顶部的距离,然后向上移动对应的距离即可,推荐使用
let element = document.getElementById('aaaa');
let height = document.getElementById('aaaa').offsetTop; //计算需要向上移动的距离
element.scroll({
top: height, //向上移动的距离,如果有fixede布局, 直接减去对应距离
behavior: 'smooth', // 平滑移动
});