Текст в родителе флоатов в CSS

Давайте уберем свойство height для дива и поставим небольшой текст перед картинкой.

В этом случае высота нашего дива будет равна высоте текста, а картинка по-прежнему вылезет за див:

html<div>
  text
  <img src="img.png" alt="">
</div>
cssdiv {
  border: 1px solid red;
}
img {
  float: right;
}

Результат:

Давайте поставим текст после картинки - результат не изменится:

html<div>
  <img src="img.png" alt="">
  text
</div>
cssdiv {
  border: 1px solid red;
}
img {
  float: right;
}

Результат:

Давайте сделаем так, чтобы картинка плавала по левому краю - результат будет аналогичным:

html<div>
  <img src="img.png" alt="">
  text
</div>
cssdiv {
  border: 1px solid red;
}
img {
  float: left;
}

Результат:

Давайте снизу добавим еще один див - картинка налезет и на него:

html<div>
  <img src="img.png" alt="">
  text
</div>
<div>
  text
</div>
cssdiv {
  border: 1px solid red;
}
img {
  float: left;
}

Результат:

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

html<div>
  <img src="img.png" alt="">
  some long text
</div>
<div>
  text
</div>
cssdiv {
  text-align: justify;
  border: 1px solid red;
}
img {
  float: left;
}

Результат:

Этот момент очень важен - при разработке может быть такое, что в каком-то блоке у вас достаточно много текста, а затем при реальной работе сайта в этом блоке будет меньше текста, чем запланировано. Получится, что в этом случае проявится проблема с налезанием плавающих элементов на соседние блоки.