我有一個固定大小和溢出的容器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