Ho provato diverse strade con css. In effetti non è stato semplice trovare una soluzione per ciò che hai chiesto, ma quando l'ho trovata mi son detto «Uhm! era così semplice».
La parola chiave è display:table.
Un esempio dimostrativo:
codice:
<!DOCTYPE HTML>
<html>
<head>
<title>Esempio</title>
<meta charset="utf-8">
<style type="text/css">
.tuodiv{
width:33%;
display:table; /* ← il bandolo della matassa */
box-sizing: border-box;
border: 2px solid Blue;
background: grey;
}
.tuodiv>p{
background: orange;
}
.FloatLeft{
float:left;
}
.Break{
clear:both;
}
</style>
</head>
<body>
<div class="tuodiv FloatLeft">
<img width="400" src="image.jpg">
</div>
<div>Altra roba di fianco al div</div>
<div class="Break"></div>
<div class="tuodiv FloatLeft">
<p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et risus hendrerit nunc feugiat venenatis ut nec purus. Nunc porta nisi ut velit cursus, tincidunt elementum mi interdum. Mauris quam ligula, congue nec lectus sed, euismod aliquam erat. Etiam sit amet massa mauris. Suspendisse elementum euismod massa sit amet rutrum. Praesent condimentum mi quis lectus pulvinar, et molestie enim viverra. Vivamus viverra consequat velit, sed fermentum massa luctus vel. Fusce rhoncus ligula tincidunt, maximus felis a, auctor eros. Sed dui ligula, porttitor id dolor quis, egestas maximus diam. Nullam ullamcorper, felis ac mattis pretium, neque lorem aliquam enim, non varius ante nisl sed turpis. Sed dictum augue eros, id sodales dui mollis ut. Nunc turpis eros, mollis fermentum ligula a, mollis porta nunc. Proin eu felis ipsum. Pellentesque venenatis vitae mauris quis viverra. Duis nec lectus viverra mauris sollicitudin vulputate ut eu odio. Fusce vestibulum viverra risus, at lobortis lorem pellentesque sed.
</p>
</div>
<p>
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Fusce et risus hendrerit nunc feugiat venenatis ut nec purus. Nunc porta nisi ut velit cursus, tincidunt elementum mi interdum. Mauris quam ligula, congue nec lectus sed, euismod aliquam erat. Etiam sit amet massa mauris. Suspendisse elementum euismod massa sit amet rutrum. Praesent condimentum mi quis lectus pulvinar, et molestie enim viverra. Vivamus viverra consequat velit, sed fermentum massa luctus vel. Fusce rhoncus ligula tincidunt, maximus felis a, auctor eros. Sed dui ligula, porttitor id dolor quis, egestas maximus diam. Nullam ullamcorper, felis ac mattis pretium, neque lorem aliquam enim, non varius ante nisl sed turpis. Sed dictum augue eros, id sodales dui mollis ut. Nunc turpis eros, mollis fermentum ligula a, mollis porta nunc. Proin eu felis ipsum. Pellentesque venenatis vitae mauris quis viverra. Duis nec lectus viverra mauris sollicitudin vulputate ut eu odio. Fusce vestibulum viverra risus, at lobortis lorem pellentesque sed.
</p>
</body>
</html>