Ответ 1
Вы можете попробовать headroom.js, который является небольшим плагином javascript, чтобы сделать трюк.
Хорошо, медведь со мной, я знаю, что это, возможно, было задано несколько раз, но я не могу получить точный ответ после небольшого поиска.
В принципе, я хочу, так как пользователь начинает прокручивать вниз, после определенной высоты div исчезает.. и он остается скрытым до тех пор, пока пользователь не начнет прокручивать вверх. Когда пользователь начинает прокручивать вверх, снова появляется div. Мне также нужны какие-то эффекты затухания.
Это то, что я придумал, просмотрев другие ответы. При этом div исчезает после определенной высоты, когда вы прокручиваете вниз, но он снова появляется, когда вы достигаете той же самой высоты при прокрутке вверх. Я хочу, чтобы div сразу показывался, когда пользователь начинает прокручивать вверх. В этом коде нет анимации...
jQuery(window).scroll(function() {
if (jQuery(this).scrollTop()>0)
{
jQuery('.myDIV').fadeOut();
}
else
{
jQuery('.myDIV').fadeIn();
}
});
Вы можете попробовать headroom.js, который является небольшим плагином javascript, чтобы сделать трюк.
Я тоже не самый большой JQuery-художник, но я думаю, что это должно работать:
var mywindow = $(window);
var mypos = mywindow.scrollTop();
mywindow.scroll(function() {
if(mywindow.scrollTop() > mypos)
{
$('.myDIV').fadeOut();
}
else
{
$('.myDIV').fadeIn();
}
mypos = mywindow.scrollTop();
});
Вы можете видеть, что mypos
обновляется каждый раз, когда пользователь прокручивает, вверх или вниз.
Я сделал некоторые обновления по вашему запросу в скрипте: http://jsfiddle.net/GM46N/2/. Вы можете увидеть в js-части скрипта, что я сделал два варианта: один с .fadeIn()
и .fadeOut()
(на этот раз работая - на вашем сайте код, который я предоставил, не работает), второй - используя .slideToggle()
.
Здесь обновлены js:
var mywindow = $(window);
var mypos = mywindow.scrollTop();
var up = false;
var newscroll;
mywindow.scroll(function () {
newscroll = mywindow.scrollTop();
if (newscroll > mypos && !up) {
$('.header').stop().slideToggle();
up = !up;
console.log(up);
} else if(newscroll < mypos && up) {
$('.header').stop().slideToggle();
up = !up;
}
mypos = newscroll;
});
Я также добавил дополнительную переменную up
, чтобы только запускать события, когда пользователь прокручивается в первый раз, а при следующем запуске переключения - когда он прокручивает вниз и так далее. В противном случае события запускаются в мааааанах (вы можете протестировать его, используя предыдущий код с .slideToggle()
, чтобы увидеть огромное количество событий).
перередактировать. Я также добавил .stop()
, так что теперь, если есть эффект, который запускает этот эффект, сначала останавливается, чтобы предотвратить задержку, если пользователь быстро прокручивает вверх и вниз.
Я использовал ваш код, просто заменил .slideToggle()
на .fadeIn
и .fadeOut
, и это получилось отлично.