t-comm
Version:
专业、稳定、纯粹的工具库
54 lines (49 loc) • 1.67 kB
JavaScript
;
Object.defineProperty(exports, '__esModule', { value: true });
var tslib_es6 = require('../tslib.es6-01322ba9.js');
/**
* 使用鼠标滚轮控制元素的scrollLeft实现左右移动
* @param {HTMLElement} element - 需要控制移动的DOM元素
* @param {Object} [options] - 配置选项
* @param {number} [options.speed=50] - 移动速度(像素/滚动单位)
* @param {boolean} [options.preventDefault=true] - 是否阻止默认滚动行为
* @param {boolean} [options.invertDirection=false] - 是否反转滚动方向
*/
function enableHorizontalScroll(element, options) {
if (options === void 0) {
options = {};
}
if (!element) return;
// 合并默认选项
var config = tslib_es6.__assign({
speed: 50,
preventDefault: true,
invertDirection: false
}, options);
// 处理滚轮事件
function handleWheel(e) {
// 阻止默认的垂直滚动行为
if (config.preventDefault) {
e.preventDefault();
}
// 计算滚轮方向(兼容不同浏览器)
var delta = Math.sign(e.deltaY || e.wheelDelta || -e.detail);
// 如果需要反转方向
if (config.invertDirection) {
delta = -delta;
}
// 计算新的scrollLeft位置
var newScrollLeft = element.scrollLeft + delta * config.speed;
// 应用滚动
element.scrollLeft = newScrollLeft;
}
// 添加事件监听
element.addEventListener('wheel', handleWheel, {
passive: false
});
// 返回一个取消监听的函数
return function disableHorizontalScroll() {
element.removeEventListener('wheel', handleWheel);
};
}
exports.enableHorizontalScroll = enableHorizontalScroll;