2013-04-09 5 views
0

Я получил следующий код для моего заголовка, который получает липким, если она достигает верхнюю часть окна:Sticky Заголовок Scroll misfunction

$(function() { 
    var stickyHeaderTop = $('#outer-header').offset().top; 

    $(window).scroll(function() { 
     if ($(window).scrollTop() > stickyHeaderTop) { 
      $('#outer-header').css({ 
       position: 'fixed', 
       top: '-300px' 
      }); 
     } else { 
      $('#outer-header').css({ 
       position: 'static', 
       top: '0px' 
      }); 
     } 
    }); 
}); 

Он работает, но, как он достигает вершины и становится липкой свитку контента нормальный прокрутка + высота div, которая была над заголовком (так что он делает слишком большой прыжок, который не выглядит гладко)

+1

Конечно, это происходит, потому что '# внешний header' не влияет на остальную часть макета страницы, когда он установлен в' fixed' - но он начинает делать, как только вы измените его на 'static'. Чтобы избежать этого, вы должны переключаться между 'fixed' и' absolute'. (Может потребоваться еще несколько модификаций.) – CBroe

+0

Большое спасибо! Ive решил проблему сейчас, finnaly: D – Vloxxity

ответ

0

Благодаря CBroe за его подсказку! Это рабочий раствор:

$(function() { 
    var stickyHeaderTop = $('#outer-header').offset().top; 

    $(window).scroll(function() { 
     if ($(window).scrollTop() >= stickyHeaderTop) { 
      $('#outer-header').css({ 
       position: 'fixed', 
       top: '-300px' 
      }); 
      $('#main').css({ 
       position: 'relative', 
       top: '332px' 
      }); 
     } else { 
      $('#outer-header').css({ 
       position: 'absolute', 
       top: '0px' 
      }); 
      $('#main').css({ 
       position: 'relative', 
       top: '332px' 
      }); 
     } 
    }); 
}); 
Смежные вопросы