2011-08-04 2 views
1

У меня возникают проблемы с смещением JQuery при использовании внутри div с фиксированной высотой и переполнением.Проблемы со смещением при переполнении Div

Внутри этого div у меня есть две колонки, главная и боковая панель. Я хочу, чтобы один из divs в боковой панели прокручивался в div до тех пор, пока он не достиг вершины, но затем я хочу, чтобы он остался там.

Я демонстрационный набор здесь: http://jsfiddle.net/zsJAr/53/

Div делает прокрутку вверх, но он не начнет оставаться на вершине, пока он не прокручивается мимо верхней части DIV, эффективно отрезать верхнюю часть div.

Любая помощь была бы принята с благодарностью.

ответ

1

Вам необходимо верхней смещения, где <h1> является:

http://jsfiddle.net/maniator/qaVnY/

$(document).ready(function() { 

    // move the share this widget with the window 
    if ($('#scrollingContent').length > 0) { 
     var $widget = $("#scrollingContent"); 
     var $window = $("#overFlowDiv"); 
     var $topOffset = $('h1').height(); 
     var $offset = $widget.offset(); 
     var $initialMargin = $widget.css('marginTop'); 

     $window.scroll(function() { 
      if ($window.scrollTop() > ($offset.top)) { 
       $widget.stop().animate({ 
        marginTop: ($window.scrollTop() - ($offset.top - $topOffset)) 
       }); 
      } else { 
       $widget.stop().animate({ 
        marginTop: $initialMargin 
       }); 
      } 
     }); 
    } 
}) 
+0

Мммм, что похоже, еще больше разрезает div #scrollingContent. – Mouseman

+0

@Mouseman, обновите скрипку, у меня была небольшая ошибка, теперь ее исправлено – Neal

+0

скрипка была всего лишь примером, а не фактической страницей, на которой я на ней. Вся страница, о которой идет речь, загружается в iframe с верхней частью страницы, имеющей меню, а остальная часть страницы - это переполнение div (сохранение меню в верхней части iframe) Я решил проблему с оригиналом, просто вычитая «topoffset» с высотой меню. Который я вижу, это то, что вы сделали в своем примере. Я просто подумал, что я «взламываю» его, делая это таким образом, поскольку скрипт работает в обычном окне. Он просто не работает должным образом в этом переполнении div. Но он работает пока. – Mouseman

1

Чуть меньше обычного, но это, казалось, работал для меня ...

$window.scroll(function() { 
if ($window.scrollTop() > $offset.top) { 
$widget.stop().animate({ 
    marginTop: ($window.scrollTop() -(180 - $offset.top)) 
});