Dem Verhalten von IE6 und Mozilla gemäß müßte das Body-Element selber der Initial-Containing-Block sein. Das aber widerspricht m.E. der CSS2 Spezifikation und auch der Browser-Praxis, denn wozu braucht ein Containing-Block noch einen Margin-Bereich?
Warum soll er keinen haben?
Ich zitiere die CSS-Spezifikation: "The position and size of an element's box(es) are sometimes computed relative to a certain rectangle, called the containing block of the element." http://www.w3.org/TR/REC-CSS2/visudet.html#containing-block-details
Hier ist von einem "certain rectangle" die Rede, nicht von einer CSS-Box mit allem, was dazu geört. Also ein schlichtes Rechteck, bei dem eigentlich nur die Fläche zählt.
Das besagt nicht mehr, als das Position und Größe eines Elements von den Dimensionen des Elternelements abhängen, genauer gesagt den inneren. Das schließt aber doch nicht aus, daß das Elternelement keine Randbereiche haben _darf_?
Und selbiges gilt natürlich auch für den Sonderfall des obersten Elements. Daß da irgendwo etwas nicht so ganz stimmt in Bezug auf das Ausfüllen mit dem Hintergrund, hatte ich ja schon geschrieben.
Das besondere am obersten Element ist allerdings, daß es ja nicht im luftleeren Raum schwebt, sondern im Anzeigebereich des Browsers. Und für den macht es in der Tat keinen Sinn, Abstände oder einen Rahmen zu besitzen. Nichtsdestotrotz bestimmt der Anzeigebereich aber selbstverständlich die äußersten Dimensionen des obersten Elements, des "initial containing blocks". Davon ausgehend kann das oberste Element aber mit allem drum und dran ganz normal gezeichnet werden, wie alle anderen Elemente auch, also verfügbare Fläche, davon abgezogen werden margin, border und padding und der Rest ist width bzw. height.
Was mir noch einfällt: Was der "initial containing block" ist, darf laut Spezifikation ja der Browser bestimmen. Vielleicht kommt daher auch die ein oder andere Ungereimtheit.
Gruß,
soenk.e