#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 еще раз спасибо за ваш хороший ответ! хорошо, я попробую еще раз…