いつも釈然としないまま、clear:both したり、border:1px solid #fff したりしてたんですけど、明確な解決法があったので、メモ。
ここ(⇒ float属性を指定した要素の親要素の高さ)に書いてありました。overflow:auto を指定するだけですって、奥さん!
<div style="overflow:auto"> <div style="float:left">左側のなにか</div> <div style="float:right">右側のなにか</div> </div>
これだけじゃ、なんなんで、display:none で隠しておいた要素を表示するとき、display:block じゃ表示されませんよと。display:inline ですよ。(なんの豆知識やねん!)