Все кажется мне прекрасным. Наиболее актуальный код для перехода к конкретному элементу является:
$('html, body').animate({ scrollTop: $('#box').offset().top }, 2000);
Вы можете добавить дополнительные пиксели, чтобы расположить его совершенно по мере необходимости.
$('html, body').animate({ scrollTop: $('#box').offset().top + 10 }, 2000);
Я пошел в свой http://jsbin.com/ewulum/2/edit и сделал несколько изменений:
.wrapper {
width: 90%;
margin: 0 auto;
background:#ececec;
overflow: auto;
height: 250px;
}
JS файл
//event delegation
$("#nav-wrapper").on("click", "a", function(e){
var cur_el_href = $(this).attr("href"),
cur_el_top =$(cur_el_href).offset().top;
e.preventDefault();
console.log("The current elem's href value is " + cur_el_href);
console.log("The target section's offset top is " + cur_el_top);
$(".wrapper").animate({
scrollTop:cur_el_top
},
800, function(){
//this callback is for demonstration only so as not to back to top when testing other links
$(this).animate({scrollTop:0}, 1000);
});
});
"При нажатии на первые две ссылки, кажется, работает хорошо." Да, потому что есть * комната * для прокрутки страницы. Обратите внимание на полосу прокрутки при нажатии, например. «Ссылка 5». Он бьет дно. Возможное решение: [добавить пробел] (http://jsbin.com/ewulum/3/edit). – jensgram
спасибо, я посмотрю код – chanHXC
, есть ли какое-нибудь обходное решение вместо добавления произвольных пробелов? Надеюсь, есть еще один способ обойти этот. – chanHXC