动态查找滚动容器(通用方案)
需求:点击置顶按钮返回页面的顶部,涉及产生滚动条的元素不唯一的情况,如果确定滚动元素的情况,直接元素.scrollTop = 0 就实现置顶了
也是查了一段时间,这个方法很赞,递归寻找滚动元素
步骤 1:判断元素是否有滚动条// 检查元素是否有垂直滚动条(我只用到了垂直)
function hasVerticalScrollbar(element) {return element.scrollHeight > element.clientHeight;
}
// 检查元素是否有水平滚动条
function hasHorizontalScrollbar(element) {return element.scrollWidth > element.clientWidth;
}步骤 2:遍历 DOM 树查找滚动容器function findScrollContainer(element) {if (!element) return window; // 默认返回 window// 递归向上查找第一个有滚动条的父元素while (element.parentElement) {element = element.parentElement;if (hasVerticalScrollbar(element) || hasHorizontalScrollbar(element)) {return element;}}return window; // 未找到则返回 window
}步骤 3:在 页面中应用引入findScrollContainer方法后
const currentElement = document.querySeletor(当前页面的元素)
const scrollElement = findScrollContainer(currentElement ) // 滚动元素
// 将滚动元素 置顶
scrollElement.scrollTo(
{top:0,behavior:'smooth' // 平滑滚动
}
)