2011-01-05 7 views
103

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

ответ

240

overflow:auto; на содержащую DIV делает все внутри него (даже плавали элементы) видны и наружного DIV полностью обтекает их. См. this example.

+6

Да, это работает, но у него есть опасность создания полос прокрутки. Правильно? – pedrozath

+1

Нет, не то, что я знаю @pedro. Внешний div должен просто расширяться, чтобы обернуть внутренние div. попробуйте в скрипке, увеличьте размеры внутренних div и посмотрите, что произойдет. – JakeParis

+1

Ничего себе, это было потрясающе, спасибо! @JMCCreative – Zhianc

11

Существует несколько способов очистки поплавков. Вы можете проверить некоторые здесь:
http://work.arounds.org/issue/3/clearing-floats/

Например, clear:both может работать для вас

#element:after { 
    content:""; 
    clear:both; 
    display:block; 
} 

#element { zoom:1; } 
+1

Преимущество этого подхода заключается в том, что 'overflow: auto;' будет кликать контент (например, фокусные украшения), который переполняется за пределы элемента, но этого не произойдет. – Dan

+0

overflow: auto создал горизонтальную полосу прокрутки для меня, поэтому я не мог ее использовать. Это сработало отлично. –

11

Во многих случаях overflow: auto; будет достаточно, но для завершения и поддержки кросс-браузера ознакомьтесь с Clearfix, который сделает работу для всех браузеров.

Давайте рассмотрим следующую разметку ..

<div class="clearfix"> 
    <div class="content">Content 1</div> 
    <div class="content">Content 2</div> 
</div> 

Наряду со следующими стилями ..

.content { float:left; }

.clearfix { ..from link.. }

Без clearfix, родитель div не будет иметь высота из-за его плавающих детей. Clearfix заставит родителя учитывать плавающих детей.

+2

Clearfix - дополнительная разметка. Просто дайте родительскому div разметку 'overflow: auto;' – JakeParis

6

Я понял, что отличный способ сделать это - установить display: table на div.

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