2016-08-29 8 views
2

Вот ручка ...Fixed положение заголовка на свитке - Если Else не работает

http://codepen.io/jareko999/pen/bZXbWP

«тогда» часть JQuery работает и добавляет .fixed класс к #header, когда он равен до или ниже 0, но он не удаляет его, когда headerTop находится выше 0, «else». Я не могу понять, что здесь происходит. JS newb здесь, я хотел бы понять, как заставить это работать. Благодарю.

HTML

<div class="content"> 
    <div id="header"></div> 
</div> 

CSS

body { 
    overflow-x: hidden; 
    margin: 0; 
} 

#header { 
    width: 100%; 
    height: 80px; 
    background: blue; 
    z-index: 1; 
} 

.content { 
    position: absolute; 
    top: calc(100% - 80px); 
    width: 100%; 
    height: 200vh; 
    background: linear-gradient(to bottom, red, yellow); 
} 

.fixed { 
    position: fixed; 
    top: 0; 
    width: 100%; 
    background: blue; 
} 

JQuery

$(window).scroll(function() { 
    var top = $('#header').offset().top; 
    var headerTop = (top - $(window).scrollTop()); 

    if (headerTop <= 0) { 
     $('#header').addClass('fixed'); 
    } else { 
     $('#header').removeClass('fixed'); 
    } 

}); 
+0

Итак, когда вы установите позицию фиксированной, как вы думаете, что происходит, когда вы проверяете сверху? 'console.log (вверху);' покажет вам, почему это не работает. – epascarello

+0

Oh ya, duh. Это будет headerTop, но я знаю, что вы имели в виду. Хм ... Я пытаюсь, когда контейнер достигает вершины 0 или меньше, добавьте класс, закрепленный в заголовке. Но когда он равен 0 или выше, он не имеет его или удаляет. Я вернусь к чертежной доске и посмотрю, что я могу сделать. –

+0

Подсказка: высота элемента. Также вы можете избавиться от if else и выполнить jQuery. '$ ('# header'). toggleClass ('fixed', headerTop <= 0);' – epascarello

ответ

2

мне нужно, чтобы получить родительские дивы смещение(). Верх, а не собственно сам заголовок. Вот последняя функция прокрутки для липкого заголовка на основе верхней позиции родительских элементов.

http://codepen.io/jareko999/pen/bZXbWP

$(window).scroll(function() { 
    var top = $('.content').offset().top; 
    var headerTop = (top - $(window).scrollTop()); 

    $('#header').toggleClass('fixed', headerTop <= 0); 
    console.log(headerTop); 
}); 

 Смежные вопросы

  • Нет связанных вопросов^_^