[QUOTE=Ares;312417]
Aber ich fand die Idee zunächst besser als des ganze durch ein zusätzliches (überflüssiges?) <div> zu umgeben, diesem das Padding und den Hintergrund zuzuweisen und Überschrift über den Absatz zu setzen.[quote]
Dafür sind aber DIVs da.
Zitat:
Mich hat erstaunt, dass wegen der h4 Überschrift der gesamte Inhalt der p-Box herausgenommen wird. Die p-Box bleibt also leer, und der gesamte Inhalt wird darunter angezeigt.
|
Die Darstellung von invalidem HTML ist nicht definiert. Browser können (müssen?) in dem Fall machen, wozu sie bock haben.
Zitat:
Das passiert auch, wenn an h4 mit display: inline; nicht als Blockelement verwendet.
|
Die Regel "P-Elemente dürfen keine Block-Elemente enthalten" ist eine HTML-Regel. Die Display-Eigenschaft mit CSS zu änderen ändert daran nichts.
Zitat:
Verwendet man aber ein span und setzt display: block; wird der Inhalt komischwer Weise korrekt in der p-Box angezeigt?
|
Umgekehrt ist genauso CSS die HTML-Regeln egal. CSS hat keine Probleme damit Blöcke in Inline-Elementen darzustellen.
Zitat:
Woran liegt es, dass der Inhalt aus der p-Box herausgenommen wird?
|
In HTML sind die schliessenend </p>-Tags optional. Wenn beim Parsen eines P-ELements auf ein Element gestossen wird (hier ein H4), das nicht in einem P vorkommen darf, wird ein weggelassenes </p> angenommen und das Element geschlossen.
Zitat:
Oder ist eine Überschrift innerhalb eines Absatzes so ein böser Fehler, dass man das besser anders mache?
|
Ja, es ist böse. Ohne DIV geht es nur, wenn Überschrift und Absatz nicht als eine Einheit angesprochen werden muss. Einfach H4 und P den selben Padding-Left geben.
Robin