我有一个固定大小和溢出的容器 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);
});
感谢所有的帮助,我迷失了如何解决这个问题,今天学到了很多东西。