Ronald: Abstand durch den <p>-Tag

Hallöchen,

warum hat das <p>-Tag eigentlich immer einen automatischen Abstand zum darauf folgenden Element und wo ist dieser definiert? Ist es dem Browser überlassen, welchen Abstand er verwendet, wenn ich keine Angaben wie margin-bottom mache?

Und warum habe ich z.B. in einer Tabelle einen Abstand vor dem ersten <p>-Tag?
Beispiel:
<table width="300" border="2" cellspacing="0" cellpadding="0">
  <tr>
    <td><p>Dieser Textabsatz hat einen
Abstand von xxx zum darauffolgenden.</p>
</td>
  </tr>
</table>

Kann man so etwas generell abstellen? Wenn ich ja beispielsweise einen negativen Wert über CSS definiere z.B.
p {margin-top: -20px;}

gilt das ja für alle <p> Elemente. Besteht die einzige Möglichkeit dem ersten <p> eine Klasse zuzuweisen die das umgeht?

Grüße
Ronald

  1. warum hat das <p>-Tag eigentlich immer einen automatischen Abstand zum darauf folgenden Element und wo ist dieser definiert? Ist es dem Browser überlassen, welchen Abstand er verwendet, wenn ich keine Angaben wie margin-bottom mache?

    <p /> = paragraph, zu deutsch absatz

    ein absatz hat in der typographie, zumindest im deutschen traditionell eine leerzeile danach oder eine einrückung in der ersten zeile

    je nach browser-default-stylesheet haben <p />-elemente einen aussenabstand (margin) davor und danach, durch collapsing margins fallen diese aber zusammen - natürlich kann man die werte auch selbst frei definieren - empfehlenswert ist einen absatz nach einem ähnlichen schema wie überschriften zu definieren - abstände immer davor, danach oder (davor und danach) damit bei verschiedenen textzusammenstellungen immer ein vernünftiges layout bleibt

    Und warum habe ich z.B. in einer Tabelle einen Abstand vor dem ersten <p>-Tag?
    Beispiel:
    <table width="300" border="2" cellspacing="0" cellpadding="0">
      <tr>
        <td><p>Dieser Textabsatz hat einen
    Abstand von xxx zum darauffolgenden.</p>
    </td>
      </tr>
    </table>

    ein <p />-element ist in einer tabelle nur selten sinnvoll - wenn du tabellen zum layouten benutzt, tu das nicht

    Kann man so etwas generell abstellen? Wenn ich ja beispielsweise einen negativen Wert über CSS definiere z.B.
    p {margin-top: -20px;}

    abstellen tust du das mit margin-top: 0;
    ein negativer wert würde nicht funktionieren

    gilt das ja für alle <p> Elemente. Besteht die einzige Möglichkeit dem ersten <p> eine Klasse zuzuweisen die das umgeht?

    du suchst die pseudo-klasse :first-child - leider versteht die der internet explorer nicht, darum musst du entweder fest eine echte klasse in den ersten absatz schreiben oder diese mit javascript nachtragen bzw im ie 6 darauf verzichten

    für initiale eignet sich übrigens :first-letter, das kann der ie 6 schon

    1. Danke, das war sehr hilfreich.

      Viele Grüße
      Ronald