मेरे पास निश्चित आकार और अतिप्रवाह के साथ एक कंटेनर div है: स्क्रॉल, यह एक प्रकार की सूची बनाने वाले छोटे divs से भरा है। यहां एक बेवकूफ उदाहरण है: http://jsfiddle.net/etYSC/2/मैं स्क्रॉलबार को केवल निश्चित अंतराल पर स्क्रॉल कैसे कर सकता हूं?
जो मैं चाहता हूं वह है कि स्क्रॉलिंग कभी भी एक बॉक्स को काट नहीं देती है, हमेशा 3 पूर्ण बक्से दिखाती है (इस उदाहरण में), तो यह हमेशा एक निश्चित संख्या में पिक्सेल स्क्रॉल करेगा।
मैं यह कैसे कर सकता हूं?
मैं jquery लाइब्रेरी का उपयोग कर रहा हूं।
गुमराह करने वाले कीवर्ड की वजह से Google इस प्रश्न पर एक कठोर मालकिन रहा है।
- समाधान
मैं 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
@kiranvj को मेरा अंतिम रूप मिला, ऐसा नहीं हुआ जब मैंने पूछा कि मुझे यह पसंद आया लेकिन मुझे यह बेहतर पसंद है। आपकी सहायता के लिए धन्यवाद। – petervaz