UNPKG

t-comm

Version:

专业、稳定、纯粹的工具库

54 lines (49 loc) 1.67 kB
'use strict'; 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;