Les Spacers sont morts... vive les Spacers !
La propriété clear permet de contrôler le flux autour des éléments flottants. Cette propriété indique quels côtés d'une ou des boîtes d'un élément ne doivent pas être adjacents à une boîte flottante précédente.
La valeur la plus couramment admise est both. La boîte se déplace alors sous chacune des boîtes flottantes. En clair : ne pouvant se placer à côté du ou des blocs flottants, il se place décalé en dessous de ceux-ci.
L'utilisation de clear est devenue fréquente, du fait que le positionnement flottant présente un problème de débordement.
Mark Newhouse [en] a proposé une solution actuellement largement utilisée : celle du spacer. Elle consiste à inclure dans la boîte verte un élément bloc au contenu fictif (l'espace insécable nbsp;), doté de la propriété clear qui lui interdit d'être adjacent à une boîte flottante.
Par la suite, on a reconnu que l'emploi d'un bloc vide, uniquement avec un espace insécable relevait de la bidouille grossière... même si elle est nécéssaire.
On s'est donc penché à diversifier les solutions, tel qu'employer la balise HR plutôt qu'un bloc DIV vide.
Dans tous les cas, cela induit l'utilisation de DIV "spacer" ou de HR "spacer" utilisant la propriété clear : both, à des endroits où ce DIV ou ce HR n'ont par forcément lieu d'exister à part celui de pallier à un bug (?).
Personnellement, ce genre de bidouille me fait penser aux horribles spacer.gif à l'époque, les fameuses images gif transparentes destinées à "caler" les éléments et qu'on collait partout dans le code... si si, je suis sûr que vous vous en souvenez : vos éditeurs WYSIWIG s'en servent encore !
Sans vouloir troller inutilement (quoique ça fait du bien parfois), si on doit utiliser des spacers pour faire des mises en pages CSS, je crois qu'il y a un problème quelque part dans le fond, non ?