Как заставить внутренний DIV двигаться с помощью положения прокрутки внешнего DIV без фиксированной ширины

0

У меня есть серия элементов DIV, которые составляют диаграмму. Основное внимание уделяется всему, что содержится в "rightPanel" в приведенном ниже коде.

topPanel имеет абсолютную позицию, и его верхнее значение (верх: 0px) необходимо изменить при прокрутке правой панели DIV. Кажется, что мой jQuery верен, но он не стреляет в событие прокрутки rightPanel. См. Следующий код:

HTML

Main
  <div class="mainContent">
    <div class="leftPanel"> Left Panel
    </div>
    <div class="rightPanel">Right Panel
      <div class="dataPanel">Data Panel
        <div class="topPanel">Top
        </div>
        <div class="bottomPanel">
            &nbsp;
            <p>Data Data Data Data Data</p>
        </div>
      </div>
    </div>

CSS

.mainContent
{
    width: 100%;
    max-height: 500px;
    overflow: hidden;
    overflow-y: scroll !important;
    position: relative;
    border: solid 3px blue;
}
.leftPanel
{
    width: 225px;
    position: relative;
    overflow: hidden;
    border: solid 3px pink;
    float: left;
}
.rightPanel
{
    overflow: hidden;
    border: solid 3px orange;
}
.dataPanel
{
    width:21355px;
    height: 3253px;
    border: solid 3px yellow;
}
.topPanel
{
    position: absolute;
    width: 21355px;
    border: solid 4px purple;

}
.bottomPanel
{
    clear:both;
    border: solid red 3px;
}

JQuery

var sOffset = $(".topPanel").offset().top;
var shareheight = $(".topPanel").height() + 43;
$(".rightPanel").scroll(function() {
    alert('in the function');
    var scrollYpos = $(document).scrollTop();
    if (scrollYpos > sOffset - shareheight) {
        alert('inside');
        $(".topPanel").css({
            'top': '61px',

        });
    } else {
        alert('else');
        $(".topPanel").css({
        'top': 'auto',

        });
    }
});

И вот моя скрипка http://jsfiddle.net/LH7g7/

Теги:
scroll

1 ответ

0
Лучший ответ

Это потому, что mainContent имеет переполнение (скроллер) не rightPanel.

Вам нужно скрыть переполнение основного содержимого и сделать отображение переполнения rightPanels. Вам нужно будет установить высоту для правой панели также, чтобы сделать переполнение.

Измените это в css:

.mainContent
{
    width: 100%;
    max-height: 500px;
    overflow: hidden;
    position: relative;
    border: solid 3px blue;
}

.rightPanel
{
    overflow-y: auto;
    border: solid 3px orange;
}

затем установите высоту rightPanel в javascript:

 $(".rightPanel").height($(".mainContent").height())
 $(".rightPanel").scroll(function() {'Code here'});
  • 0
    да, полный бред с моей стороны с этим ... ха-ха. Мне нужно перефразировать мой вопрос, я пытался установить верхнее значение topPanel DIVs на видимую верхнюю часть значения прокрутки mainContent DIVs. Но вы ответили на мой вопрос, поэтому я просто опубликую его в новом вопросе, если у вас нет решения;)
  • 0
    Все хорошо! Я быстро посмотрю, ха.
Показать ещё 5 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню