2011-01-10 10 views
63

Mam następujące znaczniki:CSS: jak dostać się paski przewijania na div wewnątrz pojemnika o stałej wysokości

<div class="FixedHeightContainer"> 
    <h2>Title</h2> 
    <div class="Content"> 
    ..blah blah blah... 
    </div> 
</div> 

CSS wygląda następująco:

.FixedHeightContainer 
{ 
    float:right; 
    height: 250px; 
    width:250px; 
} 
.Content 
{ 
    ??? 
} 

Ze względu na swoją treść, wysokość div.Content jest zwykle większa niż przestrzeń podana przez div.FixedHeightContainer. W tej chwili, div.Content wesoło rozciąga się od dna div.FixedHeightContainer - wcale nie tego, czego chcę.

Jak określić, że div.Content otrzymuje paski przewijania (najlepiej tylko w pionie, ale nie jestem wybredny), gdy ich wysokość jest zbyt duża, aby zmieścić?

overflow:auto i overflow:scroll nic nie robią, z jakiegoś dziwnego powodu.

Odpowiedz

109

ustawienie overflow powinno się nim zająć, ale musisz ustawić wysokość Content również. Jeśli atrybut wysokości nie jest ustawiony, element div będzie rósł pionowo tak wysoko, jak potrzebuje, a paski przewijania nie będą potrzebne.

Patrz Przykład: http://jsfiddle.net/ftkbL/1/

+0

porządku - dzięki. Więc muszę określić wysokość div.Content? Zakładałem, że wyskoczy z pojemnika, że ​​nie pasuje, i zastosuj paski przewijania na tej podstawie. – David

+6

Jeśli "Treść" ma stałą wysokość, nie powinieneś nadawać 'FixedHeightContainer' stałej wysokości, ponieważ nie wiesz, jak wysoki będzie twój tytuł, więc' Treść' może zostać wypchnięta. Zobacz: http://jsfiddle.net/ftkbL/2/ Powinieneś ustawić stałą wysokość ** tylko ** na elemencie z 'overflow: scroll'. Zobacz http://jsfiddle.net/ftkbL/3/ lub http://jsfiddle.net/ftkbL/4/ – RoToRa

+0

Widzę twój punkt (z pierwszego linku), ale tekst tytułu jest znany i jest za krótki, by się z nim zepsuć linię, chyba że użytkownik nadał tekstowi niepraktyczny rozmiar. – David

Powiązane problemy