2014-07-21 4 views
0

Я пытаюсь смоделировать базовую структуру моей страницы после this site - то есть, в частности, используя фиксированный заголовок/навигационную панель с боковой панелью с прокруткой и панель содержимого который прокручивается нормально. Похоже, сайт, на который я ссылаюсь, использует функции flexbox, но мне нужно будет настроить несколько старых браузеров (по крайней мере, IE8 и выше), поэтому я надеюсь реализовать этот макет с помощью чистого CSS или с помощью jQuery.CSS: выкладка фиксированного заголовка с прокруткой боковой панели

У меня есть fiddle set up here, который показывает основную структуру, на основе двух основных оберток следующим образом:

.wrapper { 
    width: 100%; 
    height: 100%; 
    position: relative; 
} 
.body-wrapper { 
    margin-top: 80px; 
    width: 100%; 
    height: 100%; 
} 

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

Большое спасибо за любую помощь здесь; Я открыт для корректировки моей версии или совершенно другого подхода.

+0

[This] (http://stackoverflow.com/questions/6887112/scroll-particular-div-contents-with-browsers-main-scrollbar) может быть вам полезен, так как я думаю, что это примерно то, что вы пытаясь сделать. –

ответ

1

Один из способов сделать это, не изменяя существующий подход слишком много, заключается в использовании position:fixed с боковой панелью. Вы можете добавить эти стили к вашему CSS:

div#mainBody { 
    padding-left:220px; /* This is how wide #list is */ 
} 
aside#list{ 
    position:fixed; 
} 

Обратите внимание, что я изменил свой идентификатор для основного содержимого контейнера #mainBody, так как у вас уже есть #main на вашей странице, используемое с заголовком. (Идентификатор должен быть уникальным.) Вот вам JSFiddle.

Надеюсь, это поможет! Дайте знать, если у вас появятся вопросы.

EDIT: Причина содержание в нижней части боковой панели отрезана потому, что у вас есть следующий стиль:

aside#list { 
    height:100%; 
} 

Это делает на боковой панели 100% высоты окна просмотра - проблема в том, что он не имеет 100% высоты окна просмотра для отображения самого себя, так как он нажимается на верхнюю часть заголовка. В результате часть боковой панели заканчивается на экране, и вы не можете прокручивать ее (так как боковая панель больше не прокручивается с телом). Чтобы исправить это, удалите этот стиль, и использовать вместо этого:

aside#list { 
    bottom:0; 
    top:80px; /* Height of the header */ 
} 

Это гарантирует, что боковая панель начинается прямо под заголовком, и заканчивается прямо в нижней части окна просмотра. Таким образом, прокрутка к нижней части боковой панели покажет весь контент. Вот для этого updated JSFiddle.

+0

Спасибо, Serlite, что сделал! И хорошая привязка к ID-имени; У меня осталось два вопроса: (1) прокрутка к нижней части боковой панели оставляет часть отрезанного контента; Я могу добавить дополнительное нижнее дополнение к списку 'в сторону # .container', но мне интересно, есть ли другой подход? (2) также, я замечаю, что при использовании моего колеса мыши для прокрутки содержимого на боковой панели он также прокручивает содержимое тела, тогда как на сайте, на который я ссылался выше, этого не происходит - то есть обе области прокручиваются полностью независимо друг друга; знаете ли вы, как они это достигают? Благодаря! – nickpish

+1

Я добавил несколько CSS, чтобы устранить проблему, когда нижняя часть боковой панели скрыта. Я вижу, что вы имеете в виду с проблемой прокрутки, хотя это случается только для меня.Не совсем уверен, почему это происходит. Похоже, именно так браузер выбирает контекст для прокрутки. «~» (Я понял, что это произойдет на другом сайте, хотя это утешение.) – Serlite

+0

Фантастично, спасибо еще раз. Один последний вопрос: я полагаю, что '.body-wrapper' у меня вокруг боковой панели и' # mainBody' теперь не требуется, поскольку оба элемента обрабатываются отдельно, нет? также, спасибо за проверку поведения прокрутки; Теперь я вижу, что это зависит от браузера; в FF он ведет себя точно так же, как и другой сайт, только не в Chrome, для меня, по крайней мере, ... – nickpish

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