Сделайте что-нибудь, когда смещение div меньше фиксированного значения

#javascript #jquery

#javascript #jquery

Вопрос:

Я хочу уменьшить непрозрачность меню, если его смещение к верхней части окна меньше 700 пикселей. Но я не понимаю, почему этот код не работает.

 $(window).scroll(function() {      
   var offset = $(".navigation-top").offset();
   var posY = offset.top - $(window).scrollTop();
   if ($(posY) < 700) {
      $('.navigation-top').animate({'opacity':'0.1'},500);
      } else {
      $('.navigation-top').animate({'opacity':'1'},500);
      }      
 });

  

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

1. Попробуйте if (posY < 700) { , нет причин преобразовывать его в объект jQuery.

2. posY это число. Зачем преобразовывать его в объект jQuery? Просто напишите if (posY < 700) .

3. Спасибо! ХОРОШО — я сделал так, как вы предложили, это работает с большой задержкой. Хммм.

Ответ №1:

Спасибо Карстену и Джереми,

Я закончил с этим. Но .stop() — это мантадори. В противном случае это работает только с крайней задержкой из-за беспорядка данных при прокрутке.

 $(window).scroll(function() {      
   var offset = $(".navigation-top").offset();
   var posY = offset.top - $(window).scrollTop();
   if (posY < 700) {
      $('.navigation-top').stop().animate({'opacity':'0.1'},500);
      } else {
      $('.navigation-top').stop().animate({'opacity':'1'},500);
      }      
 });