css: плавающее изображение слева - проблема

я пытаюсь сделать что-то вроде:

--------------------------------------------
| --------- text text text text text text  |
| | image | text text text text text text  |
| |       | text text text text text text  |
| |       | text text text text text text  |
| --------- text text text text text text  |
| text text text text text text text text  |
| text text text text text text text text  |
--------------------------------------------

разметка должна быть правильной:

<div>
    <img src='myimage.jpg' style='float:left;'>
    tex text text ..
</div>

проблема в том, что если текста немного, изображение будет "выплывать" из контейнера div, что выглядит так:

--------------------------------------------
| --------- text text text text text text  |
| | image | text text text text text text  |
|_|       |________________________________|
  |       |
  ---------

есть идеи, как это исправить? единственное решение для меня кажется установкой минимальной высоты контейнера div. Спасибо


person Fuxi    schedule 09.08.2010    source источник


Ответы (2)


добавьте пустой элемент в конец элемента div с помощью style="clear:both;, вот так:

<div>
    <img src='myimage.jpg' style='float:left;'>
    tex text text ..
    <div style="clear:both;"></div>
</div>
person jigfox    schedule 09.08.2010
comment
Это тоже верное решение, хотя оно усложняет разметку. Я сталкивался со случаями, когда трюк с переполнением мне не подходит, и требуется div с clear: both. - person Ryan Kinal; 09.08.2010
comment
Действительно, очень полезный ответ. За исключением того, что не добавляйте код CSS clear:both; в свой HTML-код. Как обычно, сделайте это в своем файле CSS. В моем случае я добавил очистку <div> непосредственно перед </main>, например: ‹div class = clearboth› ‹/div›. И в моем файле CSS есть .clearboth {clear: both;}. - person Henke; 07.08.2020
comment
Если подумать, учитывая, что вы не хотите зависеть от возможности изменять HTML-код, возможно, стоит подумать о clearfix: https://css-tricks.com/snippets/css/clear-fix/. К сожалению, сейчас у меня нет времени экспериментировать с этим. - person Henke; 09.08.2020
comment
На самом деле я решил без внесения каких-либо изменений в HTML-код. Хитрость заключалась в том, чтобы добавить overflow: auto; к родительскому элементу переполненного тега <div> (в моем случае <aside>). Вот так, main {overflow:auto;}. (Где <main> в моем случае - родительский тег.) - person Henke; 10.08.2020

‹Div style =" overflow: auto "› ‹/div›

person Deepak    schedule 09.08.2010