calque1 est flotté (float:left), ce qui fait qu'il sort du flux et donc ".contenu" ne pourra contenir cet élément.
Fait un test simple, prend un div, mets 3 div en float:left à l'intérieur, et regarde la hauteur de ce div conteneur. Il fera 0px de haut.
C'est un comportement naturel en CSS
Si ça marche sous IE, c'est parce que tu as mis une largeur à ".contenu", et lorsqu'on met une largeur à un élément sous IE, on lui applique le "layout (haslayout)". Ce qui entraine automatiquement un contexte de formatage.
Pour avoir ce contexte de formatage sous les autres navigateurs (firefox, opera, safari), il suffit de mettre un "overflow:hidden" sur .contenu et pour IE6 tu supprime cet overflow:hidden via un _overflow:visible, juste après..
Autre chose quand même, si tu mets un overflow:hidden, sur un élément, et que tu veux lui mettre aussi une hauteur minium sans que celle ci vienne casser les pied, utilise le min-height