2013-03-26 7 views
16

Mam mój kod HTML, CSS skonfigurowany zgodnie z poniższym kodem. Dodałem również link JSFiddle, ponieważ znacznie wygodniej będzie zobaczyć kod w akcji.Ustaw maksymalną wysokość na wewnętrznym div, tak aby pojawiły się paski przewijania, ale nie na div rodzica

Problem mam jest to, że gdy nie ma dużo tekstu w div #inner-right w #right-col div, chcę pasek przewijania do pojawiają się na #inner-righttylko. Mój obecny kod pokazuje dwa paski przewijania: #inner-div i #right-col. Jeśli zmienię CSS na #right-col na overflow: hidden, aby pozbyć się zewnętrznego paska przewijania, wewnętrzny pasek przewijania również zniknie, a #inner-right nie będzie już dłużej przestrzegać reguły max-height.

Jak ustawić tak, aby pasek przewijania pojawiał się tylko na #inner-right, gdy jego zawartość jest zbyt duża.

JSFiddle

html, body { 
 
    height: 100%;  
 
} 
 
#wrapper { 
 
    height: 100%; 
 
    display: table; 
 
    width: 700px; 
 
} 
 
#header, #footer { 
 
    display: table-row; 
 
    height: 30px; 
 
} 
 
#body { 
 
    height: 100%; 
 
    display: table-row; 
 
    background: rgba(255, 0, 0, 0.5); 
 
} 
 
#left-col, #right-col { 
 
    display: inline-block; 
 
    width: 320px; 
 
    height: 100%; 
 
    max-height: 100%; 
 
    margin-right: 20px; 
 
    border: 2px black solid; 
 
    vertical-align: top; 
 
    padding: 3px; 
 
    overflow: auto;  
 
} 
 
#inner-right { 
 
    height: 100%; 
 
    max-height: 100%; 
 
    overflow: auto; 
 
    background: ivory; 
 
}
<div id="wrapper"> 
 
    <div id="header">Header</div> 
 
    <div id="body"> 
 
     <div id="left-col"> 
 
      Lorem ipsum ... little text 
 
     </div> 
 
     <div id="right-col"> 
 
      <div id="header-text">Header</div> 
 
      <div id="inner-right"> 
 
      Lorem ipsum ...lots of text 
 
      </div> 
 
     </div> 
 
    </div> 
 
    <div id="footer">Footer</div> 
 
</div>

Odpowiedz

31

Jeśli się

overflow: hidden w zewnętrznym div i overflow-y: scroll w wewnętrznej div będzie działać.

http://jsfiddle.net/C8MuZ/11/

+1

Ciężko kodowane wysokości do 300 pikseli. Nie jestem w stanie tego zrobić. Muszę zostawić wysokość na 100%; – xbonez

+0

Myślałem, że jsfiddle automatycznie przewija kontener wyjściowy, więc zakodowałem go. Czy to nie działa na Twojej stronie? –

+1

Czy to naprawdę działa bez sztywnego kodowania wysokości? –

1

zestaw to:

#inner-right { 
    height: 100%; 
    max-height: 96%;//change here 
    overflow: auto; 
    background: ivory; 
} 

to rozwiąże problem.

+0

muszę wewnętrzną div również mieć 100% wzrostu. Sądzę, że jeśli nie będę w stanie wymyślić niczego innego, to się nad tym rozwiążę. – xbonez

+0

@xbonez Jak to jest możliwe, aby uzyskać wewnętrzną wysokość div 100%, ponieważ dodano tu jeszcze jeden div div z nagłówkiem tytułu. wtedy możesz użyć tylko pozostałej części. dlatego musisz zmniejszyć wysokość wewnętrznego div. –

+0

używasz tych słów "100% wzrostu", ale nie sądzę, że oznacza to, co Twoim zdaniem oznacza. –

1

To może być łatwiejsze w użyciu JavaScript lub jQuery do tego. Zakładając, że wysokość nagłówka i stopki wynosi 200 to kod będzie:

function SetHeight(){ 
    var h = $(window).height(); 
    $("#inner-right").height(h-200);  
} 

$(document).ready(SetHeight); 
$(window).resize(SetHeight); 
1

To będzie działać dobrze, ustawić wysokość do żądanej piksela

#inner-right{ 
      height: 100px; 
      overflow:auto; 
      } 
Powiązane problemy