Я пытался сделать высоту изменения размера навигации, как показано здесь: http://www.kriesi.at/themes/enfold/JQuery медленная реакция scrollTop()
Я получил очень близко, как видно здесь на jsfiddle: http://jsfiddle.net/magnusbrad/4DK3F/12/
<div id="nav" class="header">
nav here
<ul class="right">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
</ul>
</div>
$(window).scroll(function() {
if ($(document).scrollTop() === 0) {
$('#nav.header').animate({height:'140px'}, 500);
$('ul.right').animate({'line-height':'140px'}, 500);
} else {
$('#nav.header').animate({height:'40px'}, 500);
$('ul.right').animate({'line-height':'40px'}, 500);
}
});
При прокрутке вниз анимация работает отлично, однако, когда вы прокручиваете назад до верхней части страницы, для обновления и выполнения инструкции else требуется 10 секунд. Что мне не хватает, чтобы сделать это быстрее, в реальном времени?
Wow! Большое вам спасибо за быстрый ответ. Я ценю объяснение того, что происходит с .animate(). Можете ли вы быстро объяснить, почему вы сначала создали var, и используете console.log? – bradmagnus
@bradmagnus О, вы можете игнорировать 'console.log' - я просто использовал это, пока я играл с ним. Что касается переменной 'top', я использую это, чтобы отслеживать, была ли позиция прокрутки ранее в верхней части или нет. Таким образом, я знаю, нужно ли ему анимировать. – BYossarian
@bradmagnus Кроме того, глядя на тот сайт, с которым вы связались, я думаю, что эффект, который у них есть, на самом деле ближе к этому: http://jsfiddle.net/4DK3F/29/ – BYossarian