2013-01-18 2 views
2

У меня есть верхний фиксированный div, а затем основной кадр, содержащий два div внутри (слева и справа). Я хочу сделать правую палку «под» только под верхней панелью прокрутки.jQuery stick div on scroll

Я положил на то, что я здесь: http://jsfiddle.net/mhD9Y/2/

$(document).ready(function(){ 

var window_top = 41 - $(window).scrollTop(); 
    var div_top = $('#stop_scroll').offset().top; 
    if (window_top > div_top) 
    $('#right').addClass('stick'); 
    else 
    $('#right').removeClass('stick'); 

}); 



.stick { 
     position: fixed !important; 
     top: 41px !important;z-index: 5 !important; -webkit-transition: all 1s ease; 
    -moz-transition: all 1s ease; 
    -o-transition: all 1s ease; 
    transition: all 1s ease; 
    } 

Дело в том, что сценарий не пинать вовсе.

спасибо

+0

'вар window_top = (41 - $ (окно) .scrollTop());' сделал что-то случится, но выглядит как дерьмо. – Leeish

ответ

4

Поместите свой код в окно прокрутки.

$(document).ready(function(){ 
    $(window).scroll(function(){ 
     var window_top = $(window).scrollTop() - 41; 
     var div_top = $('.right').offset().top; 
     if (window_top > 41) { 
     if (!$('.right').is('.stick')) { 
      $('.right').addClass('stick'); 
     } 
     } else 
      $('.right').removeClass('stick'); 
    }); 
}); 

Либо изменить Ид = "право" класс = "вправо"

ИЛИ

Изменить свой CSS в

.stick и добавить! Важно в конце каждый атрибут.

DEMO on jsfiddle

+0

+1 Это то, что я набирал, когда ваш хит. Хороший ответ –

+1

'if (window_top> div_top) $ ('# right'). ToggleClass ('stick');' должен работать, если он правильно установлен при загрузке. Также для такой операции, которая предположительно произойдет часто, кеширование элементов будет разумным. – rlemon

+0

Ничего не происходит, #right div по-прежнему прокручивает верхний div.Им пользуюсь двумя: user1965451

1

Сценарий:

$(document).ready(function(){ 
     $(window).scroll(function(){ 
     var window_top = $(window).scrollTop() - 41; 
     var div_top = $('#stop_scroll').offset().top; 
     console.log(window_top, div_top); 
     if (window_top > div_top) { 
      $('#right').addClass('stick'); 
     } else { 
      $('#right').removeClass('stick'); 
     } 
     }); 
    }); 

CSS:

.stick { 
     position: fixed !important; 
     top: 41px !important; 
    }