CSS: solution propre à la marge de l'effondrement problème lorsqu'un élément flottant

Exemple HTML+CSS:

<html>
  <body style="padding: 0; margin: 0;">
    <div style="float: right;">first</div>
    <div style="margin-top: 2em;">second</div>
  </body>
</html>

Comportement souhaité: la first div flotte en haut à droite de la fenêtre. Comportement réel: il flotte 2em ci-dessous la position souhaitée. Raison: l'effondrement de la marge.

En dépit de l'identification du problème, les solutions que je peux venir avec envie hacks:

  • changement body style de margin: -1px 0 0 0; border-top: 1px solid;.
  • insérer <div style="height: 1px; margin-bottom: -1px;"></div> avant first
  • insérer ci-dessus <div> entre les first et second

Est-il propre, idiomatiques façon d'éviter ce problème?

InformationsquelleAutor jameshfisher | 2011-06-01