我有一个固定大小和溢出的容器div:滚动,它充满了更小的div制作某种列表。这里是一个小提琴的例子:http://jsfiddle.net/etYSC/2/如何让滚动条仅以固定间隔滚动?
我想要的是滚动永远不会剪切一个盒子,使得总是显示3个满框(在这个例子中),所以它将总是滚动固定数量的像素。
我该怎么做?
我正在使用jquery库。
由于误导性的关键词,谷歌一直是这个问题上的严厉情妇。
- 解
我能提炼kiranvj码了一点,我感到非常高兴,最后的结果。
贴紧前面的DIV:
var scrollTimerHandle = "";
var positionTimerHandle = "";
$("#container").scroll(function() {
var boxSize = 84;
var newScrollPosition = parseInt(this.scrollTop/boxSize) * boxSize,
_this = this;
clearInterval(scrollTimerHandle);
scrollTimerHandle = setTimeout(function() {
positionTimerHandle = setInterval(function(){
if (_this.scrollTop == newScrollPosition){
clearInterval(positionTimerHandle);
} else {
_this.scrollTop--;
}
}, 5);
}, 600);
});
捕捉到最接近的DIV
var scrollTimerHandle = "";
var positionTimerHandle = "";
$("#container").scroll(function() {
var boxSize = 84;
var preScrollPosition = parseInt(this.scrollTop/boxSize) * boxSize;
var newScrollPosition = this.scrollTop - preScrollPosition < boxSize /2
? preScrollPosition : preScrollPosition + boxSize;
_this = this;
clearInterval(scrollTimerHandle);
scrollTimerHandle = setTimeout(function() {
positionTimerHandle = setInterval(function(){
if (_this.scrollTop == newScrollPosition){
clearInterval(positionTimerHandle);
} else {
if (_this.scrollTop > newScrollPosition){
_this.scrollTop--;
} else {
_this.scrollTop++;
}
}
}, 5);
}, 700);
});
感谢所有的帮助,我对如何解决这个问题感到迷茫,今天学到了很多东西。
这是一个艰难的,因为如果我没有记错的话,你只检查删除滚动条滚动发生后滚动位置*。这意味着,如果您强制滚动以增量(在这种情况下为块的高度),则当容器滚动几个像素时会出现很多口吃,然后跳回或前进。您可以完全移除滚动条,并提供您自己的按钮,以期望的增量滚动容器。 – jackwanders 2012-08-10 13:54:38
@kiranvj得到了我的最终形式,当我问我的时候不是我想象的那样,但我更喜欢这个。谢谢你的帮助。 – petervaz 2012-08-10 19:06:20