【发布时间】:2013-04-17 02:46:12
【问题描述】:
我正在尝试制作一个图像拇指“线”,它会在鼠标移动时滚动。我让它工作了,但我现在的问题是我想在两边做一个“填充”,所以我不必把鼠标一直放在两边就能看到第一个/最后一个拇指。但我真的无法让它工作:/
这是我现在的脚本:
// MouseMove scrolling on thumbs
var box = $('.thumbs-block'),
innerBox = $('.thumbs'),
lastElement = innerBox.find('a:last-child');
var offsetPx = 100;
var boxOffset = box.offset().left;
var boxWidth = box.width() /* - (offsetPx*2)*/;
var innerBoxWidth = (lastElement[0].offsetLeft + lastElement.outerWidth(true)) - boxOffset /* + (offsetPx*2)*/;
scrollDelayTimer = null;
box.mousemove(function (e) {
console.log('boxWidth: ' + boxWidth + ' innerBoxWidth: ' + innerBoxWidth + ' box.scrollLeft(): ' + box.scrollLeft());
var mouseX = e.pageX;
var boxMouseX = mouseX - boxOffset;
if ((boxMouseX > offsetPx) && (boxMouseX < (boxWidth - offsetPx))) {
var left = (boxMouseX * (innerBoxWidth - boxWidth) / boxWidth) /* - offsetPx*/;
clearTimeout(scrollDelayTimer);
scrollDelayTimer = setTimeout(function () {
scrollDelayTimer = null;
box.stop().animate({
"scrollLeft": left
}, {
queue: false,
duration: 500,
easing: 'linear'
});
}, 10);
}
});
我尝试在一些地方添加偏移量(内联注释掉),其中一些让它在一端工作,但不是在另一端工作:/
我很确定这是数学问题,但我不知道该怎么办:/
这是一个 jsFiddle:http://jsfiddle.net/6CJfs/1/
我希望我的问题足够清楚,不知道如何解释,希望有人能提供帮助:)
【问题讨论】:
-
只是在我脑海中你能做的就是以某种方式告诉它内框小于它的大小,然后相应地将最大值添加到 scrolleft
标签: jquery math scroll mousemove