Div исчезает при прокрутке видимость в верхней части страницы

#jquery #scroll #fadein #fadeout #visible

#jquery — jquery — запрос #прокрутите #исчезает #исчезновение #видимый #jquery #прокрутка

Вопрос:

В настоящее время я использую:

 <script>
$(window).scroll(
    {
        previousTop: 0
    }, 
    function () {
    var currentTop = $(window).scrollTop();
    if (currentTop < this.previousTop) {
        $("#menu").fadeIn();
    } else {
        $("#menu").fadeOut();
    }
    this.previousTop = currentTop;
});
</script>  

Чтобы меню моей страницы исчезало при прокрутке вниз и исчезало при прокрутке вверх, что работает. Что не работает, так это то, что мне нужно всегда быть видимым, когда я нахожусь в верхней части страницы.

Единственное решение, которое я нашел, отключает включение / выключение при прокрутке, я пытаюсь найти решение, в котором они оба работают вместе. Например. всегда видно при прокрутке верхнего 200 пикселей, но с функциями включения / выключения при прокрутке вверх / вниз. Есть предложения? Спасибо!

Ответ №1:

Я отредактировал и опробовал код. Лучшее решение — удалить исчезновение:

 <script>
$(window).scroll(
    {
        previousTop: 0
    }, 
    function () {
    var currentTop = $(window).scrollTop();
    if ( currentTop == 0 ) {
         $("#menu").addClass('static-on-top');
    } else {
        $("#menu").removeClass('static-on-top');
        if (currentTop < this.previousTop ) {
            $("#menu").fadeIn();
        } else  {
           $("#menu").hide();
       }
    }
    this.previousTop = currentTop;
});
</script>
<style type="text/css">
.static-on-top {
      display: block !important;
}
#menu {
    position: fixed;
    height: 30px;
    background: red;
    width: 100%;
    top: 0;
    left: 0;
}
</style>
<div id="menu">
    Menu
</div>
  

Комментарии:

1. Работает отлично. Спасибо!

Ответ №2:

я полагаю, что вы добавляете имя класса в верхней части страницы. Затем вы можете стилизовать его с помощью css, чтобы он всегда был виден сверху.

 <script>
$(window).scroll(
    {
        previousTop: 0
    }, 
    function () {
    var currentTop = $(window).scrollTop();
    if ( currentTop == 0 ) {
         $("#menu").addClass('static-on-top');
    } else {
        $("#menu").removeClass('static-on-top');
        if (currentTop < this.previousTop) {
            $("#menu").fadeIn();
        } else {
           $("#menu").fadeOut();
       }
    }
    this.previousTop = currentTop;
});
</script>
<style type="text/css">
.static-on-top {
      display: block !important;
}
</style>
  

Комментарии:

1. Спасибо за ваше предложение, но когда я применил код, он просто перестал мигать (появляться и гаснуть) в верхней части страницы.

2. Мигание вызвано тем, что длительность затухания составляет 500 мс и будет запускаться при каждом шаге прокрутки. Таким образом, у вас одновременно выполняется несколько операций затухания. Я думаю, вам не следует выполнять исчезновение. Только исчезает.