xxm-test-js
Version:
xxm-js通用js工具(utils)库
57 lines • 1.95 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.scrollToTop = scrollToTop;
/**
* 滚动到容器顶部。
* @param {HTMLElement | Window} [container=window] - 要滚动的容器,默认为window。
* @param {ScrollToOptions} [options={ top: 0, behavior: 'smooth' }] - 滚动选项。
* @returns {Promise<void>} - 滚动完成的Promise。
* @example
* ```javascript
* // 使用示例
* // 滚动到页面顶部
* scrollToTop().then(() => {
* // 滚动完成后隐藏滚动按钮
* const scrollButton = document.getElementById('scrollButton');
* if (scrollButton) {
* scrollButton.style.display = 'none';
* }
* });
*
* // 滚动到指定元素的顶部
* const element = document.getElementById('myElement');
* scrollToTop(element).then(() => {
* // 滚动完成后显示提示信息
* alert('已滚动到指定元素顶部');
* });
* ```
*/
function scrollToTop(container = window, options = { top: 0, behavior: 'smooth' }) {
return new Promise((resolve) => {
if (container === window) {
container.scrollTo(options);
}
else {
if ('scrollLeft' in container) {
container.scrollTo(Object.assign(Object.assign({}, options), { left: container.scrollLeft }));
}
else {
container.scrollTo(options);
}
}
const checkScroll = () => {
if ((container === window &&
(window.pageYOffset || document.documentElement.scrollTop) <= options.top) ||
(container !== window &&
'scrollTop' in container &&
container.scrollTop <= options.top)) {
resolve();
}
else {
requestAnimationFrame(checkScroll);
}
};
requestAnimationFrame(checkScroll);
});
}
//# sourceMappingURL=scrollToTop.js.map