Hallo Axel,
Möglich wäre vielleicht: »If it has block-level children, it is the distance from the top border-edge of the topmost block-level child box, to the bottom border-edge of the bottommost block-level child box« (http://www.w3.org/TR/REC-CSS2/visudet.html#q17). Somit kann die content height des Containerelement nur so hoch sein wie die border edge des p-Elements - aber was ist mit den margins des p-Elements, welche außerhalb der border edge liegen, wieso wirken sie über die content edge des Containers hinaus...? Nein, das kann nicht sein.
Doch, genau das steht doch da. Hat ein Block-level-Element nur Block-level-Children, so ist seine Größe so groß, wie die (mögliche)Rahmengröße des Kindelementes. Der Margin wird ja üblicherweise nicht mit umrahmt. [...]
Soweit entspricht das, was wir sehen, erstmal dem Standard. Es _ist_ also offensichtlich so, dass der Margin eines Block-level-Elementes außerhalb seines umgebenden Block-level-Elements stehen kann.
Ja, das erscheint mir aber reichlich sinnfrei.
Sonst würde nämlich die Regel "If it has block-level children, it(the height) is the distance from the top border-edge of the topmost block-level child box, to the bottom border-edge of the bottommost block-level child box." verletzt, da Margin außerhalb der border-edges ist.
Genau. Exakt darum ging es mir und aus dem Grund verstehe ich die Specs nicht.
Komisch ist allerdings, dass das Setzen eines Rahmens oder eines Paddings um das umgebende Block-level-Element ausreicht, um diese Regel zu brechen. Offensichtlich haben hier alle Rendering-Engines der Browser einen ähnlichen, leicht falschen, Programmalgorithmus.
Ich kann es mir auch nur durch Spekulationen erklären Ich denke jedoch, dass es eher eine Regel als ein weit verbreiteter Fehler ist, denn alle Browser zeigen wahrscheinlich nicht ohne Grund dasselbe Verhalten - aber dies ist natürlich auch nur eine Vermutung anhand eines Indizes.
Grüße,
Mathias