2013-06-18 2 views
5

Я пытаюсь развернуть страницу с горизонтальной навигационной панелью поверх верхней и области содержимого, которая будет получать полосы прокрутки, когда содержимое слишком велико.100% Высота div, полосы прокрутки 50 пикселей вне экрана из-за крайности 50px. overflow auto

Мой текущий способ сделать это - ширина ширины 100%; высота 50 пикселей; позиция абсолютная; top 0; left 0; а затем второй div с высотой 100%; ширина 100%; margin-top 50px; переполнение: авто; однако появившаяся полоса прокрутки смещается на 50 пикселей и, как таковая, выталкивает контент из нижней части страницы. Если я удаляю маржу, все работает, но она помещает содержимое за панель навигации.

Я также попробовал обернуть его в контейнер, поэкспериментируя с помещением поля и переполнением в ребёнке, но это все еще не показало требуемого эффекта.

jsFiddle, с комментариями, чтобы попытаться объяснить это лучше.

http://jsfiddle.net/Piercy/hggXJ/

HTML

<div id="nav"> 
    <h1>Navigation</h1> 
</div> 
<!-- <div id="contentContainer"> --> 
    <div id="content"> 
    <div id="oversizeContent"> 
     <p>You can see the black border on this green box, but you cannot see the bottom black border. Similarly you cannot see the bottom arrow of the scrollbar.</p> 
     <p>I tried putting a wrapper around the content and putting the margin on that but the scrollbar still over flows Uncomment the contentContainer div and comment/uncomment the corresponding css.</p> 
    </div> 
    </div> 
<!-- <div> --> 

CSS

html, body 
{ 
    height:100%; 
    overflow:hidden; 
    color:white; 
    font-weight:bold; 
} 

#nav 
{ 
    height:50px; 
    width:100%; 
    background-color:red; 
    position:absolute; 
    top:0; 
    left:0; 
    z-index: 2; 
} 
#contentContainer 
{ 
    /* uncomment this if you bring #contentContainer into play */ 
    /* 
     margin-top:50px; 
     position:absolute; 
     top:0; 
     left:0; 
    */ 


    height:100%; 
    width:100%; 

} 
#content 
{ 
    /* moving this into #contentContainer doesnt help either */ 
    /* comment this if you bring #contentContainer into play */ 

     margin-top:50px; 
     position:absolute; 
     top:0; 
     left:0; 



    width:100%; 
    height:100%; 

    background-color:blue; 
    z-index: 1; 
    overflow: auto; 
} 
#oversizeContent 
{ 
    background-color:green; 
    width:400px; 
    height:1000px; 
    border:10px solid black; 
} 
+0

Вы пытались поставить '#oversizeContent {margin-bottom: 50px; } ', чтобы исправить это? – gaynorvader

ответ

10

вместо height:100%; сделать bottom:0;, и она будет идти на дно относительного родителя или окна просмотра, если нет контейнера установлен position:relative;

DEMO

+1

Я должен был сохранить верхний край, но добавляя нижний: 0; и удаление высоты: 100%; казалось, сделал это! спасибо, http://jsfiddle.net/Piercy/E69TZ/1/ – Piercy

+1

Рад помочь!^_^... если у вас есть абсолютно позиционированные элементы, часто бывает очень удобно использовать верх, низ, влево и вправо вместо свойств высоты и ширины. –

+1

Я также должен был сделать «положение: исправлено» вместо абсолютного, так что 100% -ное содержание высоты не будет прокручиваться из окна, если на главной странице есть полоса прокрутки. –

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