Hallo Tom,
Und was ist, wenn margin:top vom <p> genauso hoch eingestellt ist?
Dann fallen die beiden Abstände zusammen. Für mehr Details siehe
http://www.w3.org/TR/CSS21/box.html#collapsing-margins
Wie könnte man denn einstellen, dass er nur diesen Wert annimmt, wenn er auf
eine class=xxx folgt, aber sonst einen anderen nehmen soll. Das habe ich bis
heute nicht kapiert.
Etwas unpräzise. Für Deine Aussage gibt es mehrere Möglichkeiten.
Erstens:
<p class="xxx">Eins</p>
<p>Zwei</p>
<p>Drei</p>
Hier würdest Du wollen, daß der untere Randabstand des Absatzes mit der
Klasse "xxx" einen anderen Wert hat, wie ein normaler Absatz. Dazu wäre
diese CSS-Regel notwendig:
p {margin-bottom:10px;}
p.xxx {margin-bottom:20px;}
Die Absätze Zwei und Drei hätten dann also als unteren Randabstand den
Wert 10px, der Absatz Eins hätte als unteren Randabstand den Wert 20px.
Man kann das aber auch anders verstehen, nämlich, daß Du willst, daß die
Absätze, die direkt auf einen Absatz mit der Klasse "xxx" folgen, aber
selbst nicht diese Klasse haben einen anderen unteren Randabstand bekommen
als die normalen Absätze. Dazu eignen sich folgende CSS-Regeln:
p {margin-bottom:10px;}
p.xxx + p {margin-bottom:20px;}
Der zweite Selektor (p.xxx + p) wirkt auf alle Absätze, denen ein Absatz
mit der Klasse "xxx" direkt voraus geht. Es ist ein sogenannter Adjacent
Selector, wie wahsaga schon schrieb, in SELFHTML hat er noch keinen eigenen
Namen, ist aber kurz beschrieben, siehe http://de.selfhtml.org/css/formate/zentrale.htm#verschachtelte_elemente
(runterscrollen)
Auf obiges Beispiel angewandt: Die Absätze Eins und Drei haben nun einen
unteren Randabstand von 10px, der Absatz Zwei einen von 20px.
CSS bietet einem da massig an Kombinationsmöglichkeiten, CSS 3.0 noch mehr.
Tim