Исчезать логотип jQuery на основе позиции прокрутки

Я пытаюсь выполнить задачу с помощью jQuery (новичок), и я почти все понял, кроме одного шага. У меня есть логотип, который исчезает после прокрутки 250px вниз по странице. У меня также есть верхняя панель навигации, которая скользит вниз и опускает логотип вниз. Если размер страницы превышает 250 пикселей, непрозрачность логотипа снова появляется, а затем исчезает при закрытии навигационной панели. Это все работает правильно.

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

Пример (должен просматриваться в браузере шире, чем 768 пикселей): http://staging.michalekbrothersracing.com/

Вот код, который я использую:

<!--LOGO FADE-->
$(document).ready(function(){
    $(document).scroll(function(){
        var top=$(this).scrollTop();
        if(top<250){
            var dif=1-top/250;
            $(".logo").css({opacity:dif});
        }
    })
});

function toggle(id) {
      var el = document.getElementById(id);
      var box = el.getAttribute("class");
      if(box == "hide"){
          el.setAttribute("class", "show");
          $('.logo').fadeTo(250, '1');
      }
      else{
          el.setAttribute("class", "hide");
          $('.logo').fadeTo(250, '0');
      }
  }

Я верю, что мое "другое" утверждение - то, что портит это. Мне трудно понять, как начать добавлять правила, основанные на положении прокрутки при переключении навигации.

Любые предложения или советы будут с благодарностью. Большое спасибо за ваше время!

1 ответ

Возможно это то, что вы ищете:

//logo fade
//store the top
var _top=0;

$(document).ready(function(){
    $(document).scroll(function(){
        //store into the var
        _top=$(this).scrollTop();
        if(_top<250){
            _dif=1-_top/250;
            $(".logo").css({opacity:dif});
        }
    })
});

//this is when you click the menu
function toggle(id) {
    var el = document.getElementById(id);
    var box = el.getAttribute("class");
    if(box == "hide"){
        el.setAttribute("class", "show");
        //menu is on - no need to fade in
        //$('.logo').fadeTo(250, '1');
    }
    else{
        el.setAttribute("class", "hide");
        //fade the logo back in
        if(_top<250){
            var dif=1-_top/250;
            $(".logo").css({opacity:dif});
        }
        else
        {
            $('.logo').fadeTo(250, '0');
        }
    }
}
Другие вопросы по тегам