Відповіді:
Додайте таке властивість:
.c{
...
overflow: hidden;
}
Це змусить контейнер дотримуватися висоти всіх елементів всередині нього, незалежно від плаваючих елементів.
http://jsfiddle.net/gtdfY/3/
Нещодавно я працював над проектом, який вимагав цього фокусу, але потрібен, щоб переповнення відображалося, тож замість цього ви можете використовувати псевдоелемент, щоб очистити свої поплавки, ефективно досягаючи того ж ефекту, дозволяючи переповнювати всі елементи.
.c:after{
clear: both;
content: "";
display: block;
}
Ви плаваєте дітей, а значить, вони "плавають" перед контейнером. Для того щоб взяти правильну висоту, ви повинні «очистити» поплавок
Стиль div = "ясно: обидва" очищає плаваючий ан надає контейнеру правильну висоту. див. http://css.maxdesign.com.au/floatutorial/clear.htm для отримання додаткової інформації про поплавці.
напр.
<div class="c">
<div class="l">
</div>
<div class="m">
World
</div>
<div style="clear: both" />
</div>
Найкраще і найбільш бронезахисне рішення - додавання ::before
та ::after
псевдоелементи до контейнера. Отже, якщо у вас є, наприклад, такий список, як:
<ul class="clearfix">
<li></li>
<li></li>
<li></li>
</ul>
І кожен елемент у списку має float:left
властивість, то вам слід додати до свого css:
.clearfix::after, .clearfix::before {
content: '';
clear: both;
display: table;
}
Або ви можете спробувати display:inline-block;
властивість, тоді вам не потрібно додавати явні виправлення.