Как объединить 2 кода javascript в один?

#javascript #jquery #scroll #combinations #visibility

#javascript #jquery #прокрутите #комбинации #видимость

Вопрос:

Я каким-то образом собрал 2 отдельных кода (абсолютный новичок) и пытаюсь объединить два блока кода в один.

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

Дополнительно: как только вы наведете на него курсор мыши (.nav-видимость), навигация должна появиться снова и снова исчезнуть при наведении курсора мыши. -> но только если вы прокрутили вниз!

Проблема: при прокрутке вниз навигация исчезает = и это здорово. Но как только вы снова прокручиваете вверх, он больше не появляется.

 var zero = 0;
$(document).ready(function() {
  $(window).on('scroll', function() {
    $('.nav-visibility').css("opacity", "0", $(window).scrollTop() >
      zero);
    zero = $(window).scrollTop();
  })
})
  
 $('nav').mouseover(function() {
  $('.nav-visibility').css("opacity", "1");
  $('.nav-visibility').css("visibility", "visible");
});

$('nav').mouseout(function() {
  $('.nav-visibility').css("opacity", "0");
  $('.nav-visibility').css("visibility", "hidden");
});
  

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

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

2. Также я не уверен, что делает zero переменная — вы используете ее в 3-м параметре, переданном .css , но я никогда не использовал более 2 параметров и не могу найти упоминания о 3-м параметре в документации

3. $('.nav-visibility').css("opacity", $(window).scrollTop() > 0 ? "0" : "1")

4. спасибо за ответ! в этом случае навигация появляется только тогда, когда вы находитесь в самом верху веб-сайта, что на самом деле намного лучше, но, к сожалению, оно исчезает навсегда, когда я один раз наведу курсор на навигацию… я предполагаю, что существует конфликт между 2 кодами

5. Да, я отвечал на ваше заявление «проблема:». Чтобы включить другой код, вам нужно добавить visibility код в событие прокрутки (или удалить из события мыши)

Ответ №1:

Проблема 1: при прокрутке вниз навигация исчезает = и это здорово. Но как только вы снова прокручиваете вверх, он больше не появляется.

Это потому, что zero точка сбрасывается при каждой прокрутке:

 zero = $(window).scrollTop();
  

поскольку вы хотите, чтобы это было только вверху, нет необходимости сбрасывать нулевую точку.

Также существует проблема с вызовом .css , который при таком использовании принимает только 2 аргумента — поэтому 2-й должен быть «0» или «1» в зависимости от положения прокрутки, что дает:

 $(document).ready(function() {
  $(window).on('scroll', function() {
    $('.nav-visibility').css("opacity", $(window).scrollTop() > 0 ? "0" : "1");
  })
})
  

Проблема 2: навигация исчезает навсегда, когда я один раз наведу курсор на навигатор

В этом случае код наведения изменяет не только opacity , но и visibility — таким образом, прокрутка изменяет непрозрачность обратно, но не видимость, оставляя ее невидимой.

В зависимости от ваших требований вы можете удалить часть видимости, чтобы при прокрутке и наведении курсора вносились одинаковые изменения:

 $('nav').mouseover(function() {
  $('.nav-visibility').css("opacity", "1");
});

$('nav').mouseout(function() {
  $('.nav-visibility').css("opacity", "0");
});
  

Конечно, если вы уберете курсор, когда он будет вверху, он также исчезнет, поэтому вы можете добавить эту проверку:

 $('nav').mouseout(function() {
  if ($(window).scrollTop() > 0) {
    $('.nav-visibility').css("opacity", "0");
  }
});
  

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

1. удивительно! это работает как шарм. 1 маленький вопрос: как мне сделать то же самое для нижней части? я пытался использовать следующий код, но, к сожалению, не работает…: $(window).scroll(function() { if($(window).scrollTop() $(window).height() == $(document).height()) { $('.nav-visibility').css("opacity", "1"); } });

2. @jkr137 вы должны попробовать отладку, чтобы выяснить, что происходит — либо в отладчике браузера, либо, возможно, с помощью событий прокрутки, используя console.log() , чтобы увидеть, каковы значения каждого из них и почему они не складываются

3. @MarcoS уже принят и благодарю вас за вашу большую поддержку и вклад

4. @freedomn-m еще раз спасибо за ваш хороший ответ! хорошо, я попробую еще раз…