टिप अरनार के लिए धन्यवाद।
आपकी सलाह मुझे सही रास्ते पर रखती है और this JSFiddle की मदद से अब मेरे पास प्रत्येक अनुभाग में चिकनी एनिमेटेड स्क्रॉल के साथ smooth scroll i wanted to achieve है और सक्रिय मेनू आइटम की स्वचालित हाइलाइटिंग है।
// Cache selectors
var lastId,
topMenu = $("#top-menu"),
topMenuHeight = topMenu.outerHeight()+15,
// All list items
menuItems = topMenu.find("a"),
// Anchors corresponding to menu items
scrollItems = menuItems.map(function(){
var item = $($(this).attr("href"));
if (item.length) { return item; }
});
// Bind click handler to menu items
// so we can get a fancy scroll animation
menuItems.click(function(e){
var href = $(this).attr("href"),
offsetTop = href === "#" ? 0 : $(href).offset().top-topMenuHeight+1;
$('html, body').stop().animate({
scrollTop: offsetTop
}, 300);
e.preventDefault();
});
// Bind to scroll
$(window).scroll(function(){
// Get container scroll position
var fromTop = $(this).scrollTop()+topMenuHeight;
// Get id of current scroll item
var cur = scrollItems.map(function(){
if ($(this).offset().top < fromTop)
return this;
});
// Get the id of the current element
cur = cur[cur.length-1];
var id = cur && cur.length ? cur[0].id : "";
if (lastId !== id) {
lastId = id;
// Set/remove active class
menuItems
.parent().removeClass("active")
.end().filter("[href=#"+id+"]").parent().addClass("active");
}
});
आप इस के लिए एक प्लगइन की जरूरत नहीं है की कोशिश करो। jQuery में 1.2.6 के बाद से .scrollTop है http://api.jquery.com/scrollTop/ आप एनिमेट विधि का उपयोग करके भी एनिमेट कर सकते हैं। .animate ({scrollTop: 0}, 2000, 'आसानी') – demux
संबंधित: http://stackoverflow.com/questions/8970740/ios-safari-scroll-to-top-does-not-work-on-certain -पृष्ठ- क्यों – demux
स्क्रॉल करने के लिए प्लगइन में अभी भी कई उन्नत विशेषताएं हैं जो वेनिला कोर स्क्रोलटॉप नहीं है। – squarecandy