私は固定サイズとオーバーフローのコンテナ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);
});
すべての助けに感謝し、私はこれにアプローチする方法に迷い、今日たくさんのことを学びました。