【发布时间】:2015-01-25 12:39:30
【问题描述】:
我基于 TweenMax 缓动和 jQuery 鼠标滚轮事件制作了一个自定义 div 滚动条。滚动就像一个魅力,但我需要移动滚动条处理程序来显示滚动进度。我根据父宽度、scrollLeft 和总 div 宽度的计算做了一些测试,但没有找到正确的解决方案……
I tried 为我的水平滚动条调整this example,但这仍然是一种奇怪的行为。
有什么想法吗?
$(window).on("mousewheel DOMMouseScroll", function (e) {
e.preventDefault();
var delta = e.originalEvent.wheelDelta / 120 /* Chrome */ || -e.originalEvent.detail; /* FF */
var dur = 1.2;
TweenLite.to($("#photos"), dur, {
scrollLeft: $("#photos").scrollLeft() - parseInt(delta * 35),
ease: Expo.easeOut,
overwrite: 5
});
});
【问题讨论】:
-
您的
handle的宽度为 12%。为什么?宽度应与正确的比例匹配,并且还应在调整窗口大小时计算,因为 #photos 的 scrollWidth 会发生变化。 -
@RokoC.Buljan 绝对不是,12% 只是样式选择。我只想移动那个滚动条处理程序。
-
哦,知道了,所以它总是“固定”在 12% 的宽度。无论如何,在调整窗口大小时,您需要重新计算处理程序宽度和区域滚动宽度比率,以使其在#photos 到达远端滚动条时始终到达远端滚动条。
-
@RokoC.Buljan 就是这样! / 没有保留。那是行不通的,而且很麻烦……:/
-
@RokoC.Buljan 从 Time Machine 备份中恢复了它:jsfiddle.net/tccsq6e9/3 — 如您所见,计算量很大,并且边缘没有限制。我在online example 上找到了垂直滚动条的代码。
标签: javascript jquery scrollbar gsap