यहाँ ज्यादातर लोग जो सुझाव दे रहे हैं, उसके विपरीत, मैं आपको एक प्लगइन का उपयोग करने की सलाह दूंगा यदि आप इस कदम को चेतन करना चाहते हैं। एक सहज उपयोगकर्ता अनुभव के लिए बस स्क्रॉलिंग स्क्रॉल पर्याप्त नहीं है। तर्क के लिए मेरा जवाब यहां देखें ।
मैंने वर्षों में कई प्लगइन्स की कोशिश की है, लेकिन आखिरकार खुद को लिखा है। आप इसे एक स्पिन देना चाह सकते हैं: jQuery.scrollable । इसका उपयोग करते हुए, स्क्रॉल क्रिया बन जाती है
$container.scrollTo( targetPosition );
लेकिन वह सब नहीं है। हमें लक्ष्य की स्थिति भी ठीक करनी होगी। अन्य उत्तरों में आपके द्वारा देखी गई गणना,
$target.offset().top - $container.offset().top + $container.scrollTop()
ज्यादातर काम करता है लेकिन पूरी तरह से सही नहीं है। यह स्क्रॉल कंटेनर की सीमा को ठीक से नहीं संभालता है। लक्ष्य तत्व को सीमा के आकार से बहुत ऊपर की ओर स्क्रॉल किया जाता है। यहाँ एक डेमो है।
इसलिए, लक्ष्य स्थिति की गणना करने का एक बेहतर तरीका है
var target = $target[0],
container = $container[0];
targetPosition = $container.scrollTop() + target.getBoundingClientRect().top - container.getBoundingClientRect().top - container.clientTop;
फिर से, इसे कार्रवाई में देखने के लिए डेमो देखें।
एक फ़ंक्शन के लिए जो लक्षित स्थिति लौटाता है और दोनों खिड़की और गैर-खिड़की स्क्रॉल कंटेनर के लिए काम करता है, इस जिस्ट का उपयोग करने के लिए स्वतंत्र महसूस करता है । वहां की टिप्पणियां बताती हैं कि स्थिति की गणना कैसे की जाती है।
शुरुआत में, मैंने कहा है कि एनिमेटेड स्क्रॉलिंग के लिए एक प्लगइन का उपयोग करना सबसे अच्छा होगा । आप एक प्लगइन की जरूरत नहीं है, हालांकि, अगर आप एक संक्रमण के बिना लक्ष्य के लिए कूदना चाहते हैं। उस के लिए @James द्वारा जवाब देखें , लेकिन सुनिश्चित करें कि आप कंटेनर के चारों ओर एक सीमा है, तो लक्ष्य स्थिति की सही गणना करें।