简易的阻尼滚动条的插件
1 // 直接添加到html中就可以看到效果 2 3 var speed = 0; // 速度(不可改) 4 var s____ = 6; // 速度(可配置) 5 var max__ = 48; // 最大速度:最好是s的倍数(可配置) 6 var direction = 0; // 方向(不可改) 7 8 $(document).on("mousewheel", function (e) { 9 e.preventDefault(); // 阻止默认滚动 10 var t1, t2 = -1, delta = e.originalEvent.wheelDeltaY || e.originalEvent.wheelDelta; // for IE 11 if (speed === 0) { 12 t1 = setTimeout(function () { 13 window.scrollBy(0, speed); 14 if (speed !== 0) { 15 setTimeout(arguments.callee, 1); 16 } else { 17 clearTimeout(t1); 18 } 19 }, 1); 20 // 缓冲(阻尼实现) 21 t2 = setTimeout(function () { 22 speed > 0 ? speed-- : speed++; 23 if (speed !== 0) { 24 setTimeout(arguments.callee, 1); 25 } else { 26 clearTimeout(t2); 27 } 28 }, 1); 29 } 30 // 刷新speed的值,实现加速,转向等 31 if (delta < 0) { 32 if (direction > 0) { 33 speed = 0; 34 direction = delta; 35 return; 36 } 37 if (speed <= max__) speed += s____; 38 else { 39 speed = max__; 40 } 41 } else { 42 if (direction < 0) { 43 speed = 0; 44 direction = delta; 45 return; 46 } 47 if (speed >= -max__) speed -= s____; 48 else { 49 speed = -max__; 50 } 51 }; 52 });
github地址:https://github.com/yorkie/DampingScrollbar.js/blob/master/dampingScrollbar.js