मैं iScroll के साथ इस समस्या का एक शानदार समाधान प्राप्त करने में सक्षम था, गति को स्क्रॉल करने की भावना और सब कुछ के साथ https://github.com/cubiq/iscroll जीथबॉक डॉक्टर महान है, और मैंने ज्यादातर इसका पालन किया। यहाँ मेरे कार्यान्वयन का विवरण है।
HTML:
मैंने अपनी सामग्री के स्क्रॉल करने योग्य क्षेत्र को कुछ divs में लपेटा है जो iScroll का उपयोग कर सकता है:
<div id="wrapper">
<div id="scroller">
... my scrollable content
</div>
</div>
CSS:
मैंने "टच" के लिए माडर्निज़्र वर्ग का उपयोग केवल उपकरणों को छूने के लिए मेरी शैली में परिवर्तन को लक्षित करने के लिए किया है (क्योंकि मैं केवल स्पर्श पर iScroll को त्वरित करता हूं)।
.touch #wrapper {
position: absolute;
z-index: 1;
top: 0;
bottom: 0;
left: 0;
right: 0;
overflow: hidden;
}
.touch #scroller {
position: absolute;
z-index: 1;
width: 100%;
}
JS:
मैंने iScroll डाउनलोड से iscroll-जांच.js को शामिल किया, और फिर नीचे के रूप में स्कोरर को इनिशियलाइज़ किया, जहाँ updatePosition मेरा फ़ंक्शन है जो नए स्क्रॉल स्थिति पर प्रतिक्रिया करता है।
# coffeescript
if Modernizr.touch
myScroller = new IScroll('#wrapper', probeType: 3)
myScroller.on 'scroll', updatePosition
myScroller.on 'scrollEnd', updatePosition
आपको स्क्रॉल ऑफ़सेट देखने के बजाय, वर्तमान स्थिति प्राप्त करने के लिए myScroller का उपयोग करना होगा। यहाँ http://markdalgleish.com/pretations/embracingtouch/ (एक सुपर सहायक लेख, लेकिन अभी थोड़ा बाहर है) से लिया गया एक फ़ंक्शन है
function getScroll(elem, iscroll) {
var x, y;
if (Modernizr.touch && iscroll) {
x = iscroll.x * -1;
y = iscroll.y * -1;
} else {
x = elem.scrollTop;
y = elem.scrollLeft;
}
return {x: x, y: y};
}
केवल अन्य गोत्र कभी-कभी मैं अपने पृष्ठ का वह हिस्सा खो देता था जिसे मैं स्क्रॉल करने की कोशिश कर रहा था, और यह स्क्रॉल करने से इंकार कर देगा। जब भी मैंने #wrapper की सामग्री बदली, और उस समस्या को हल किया, मुझे कुछ कॉल myScroller.refresh () में जोड़ना पड़ा।
संपादित करें: एक और गोचा था कि iScroll सभी "क्लिक" घटनाओं को खाता है। मैंने iScroll को "टैप" ईवेंट से बाहर निकालने का विकल्प चालू किया और "क्लिक" ईवेंट के बजाय उन को संभाला। शुक्र है कि मुझे स्क्रॉल क्षेत्र में बहुत अधिक क्लिक की आवश्यकता नहीं थी, इसलिए यह कोई बड़ी बात नहीं थी।
window.pageYOffset
औरdocument.body.scrollTop||document.documentElement.scrollTop
अस्तित्व में हर दूसरे ब्राउज़र / हार्डवेयर की तरह नहीं ।