3
我需要制作一个滑块。带按钮的滑块。如何提高?
我有内容(应该水平移动)和两个按钮 - “右”和“左”。
如果按住按钮,内容开始移动(以适当的方向)。如果你没有按住按钮,那么运动停止。此行为复制了通常的窗口滚动条的行为。
我写了一些代码:
var animateTime = 1,
offsetStep = 5;
//event handling for buttons "left", "right"
$('.bttR, .bttL')
.mousedown(function() {
scrollContent.data('loop', true).loopingAnimation($(this));
})
.bind("mouseup mouseout", function(){
scrollContent.data('loop', false);
});
$.fn.loopingAnimation = function(el){
if(this.data('loop') == true){
var leftOffsetStr;
leftOffsetInt = parseInt(this.css('marginLeft').slice(0, -2));
if(el.attr('class') == 'bttR')
leftOffsetStr = (leftOffsetInt - offsetStep).toString() + 'px';
else if(el.attr('class') == 'bttL')
leftOffsetStr = (leftOffsetInt + offsetStep).toString() + 'px';
this.animate({marginLeft: leftOffsetStr}, animateTime, function(){
$(this).loopingAnimation(el);
})
}
return this;
}
但它确实有一个我不喜欢的几件事情:
- 它总是调用函数动画(
loopingAnimation
) - 我认为这是额外的负载(不好)。 - 移动内容时,他会“抽搐颤抖” - (这不太好)。
我该如何解决这个问题优雅没有我的代码的缺点?
这太棒了!谢谢你,帮了我很多! – abhisek 2014-06-08 12:24:25
[已更新的演示](http://jsfiddle.net/MvRdD/1443/)(修复断开的链接到mousewheel插件)。 – Mottie 2015-01-13 16:50:13