Blockquote Bulge

Avatar of Chris Coyier
Chris Coyier am

DigitalOcean bietet Cloud-Produkte für jede Phase Ihrer Reise. Starten Sie mit 200 $ kostenlosem Guthaben!

In HTML wird ein Textblock, der aus einer anderen Quelle zitiert wird, wie folgt markiert

<blockquote>Hey, I'm a block of text from elsewhere.</blockquote>

In Ihrem CSS werden Sie wahrscheinlich spezielle Stile für diese haben. Vielleicht ein wenig background und padding

blockquote { padding: 10px; background: #eee; }

Wenn das Zitat mehrere Absätze umfasst, können Absätze innerhalb des Blockquotes verschachtelt sein (beides sind Block-Level-Elemente, also ist das in Ordnung). Zitate befinden sich auch wahrscheinlich in größeren Textbereichen, daher nehmen wir an, dass Absätze darum herum sind.

<p>Preceding paragraph</p>

<blockquote>
   <p>Hey, I'm a block of text from elsewhere.</p>
   <p>And I'm another one.</p>
</blockquote>

<p>Succeeding paragraph</p>

Und natürlich brauchen wir etwas Abstand nach diesen Blöcken, damit Absätze Luft zum Atmen haben und wie Absätze aussehen.

blockquote, p { margin-bottom: 20px; }

Jetzt haben wir ein klassisches Problem. Der margin des letzten Absatzes innerhalb des Blockquotes wird die Größe des Blockquotes nach unten verschieben und somit eine ungleiche Menge an Platz um das Zitat herum erzeugen.

Dies kann behoben werden, indem der untere Abstand des letzten Absatzes innerhalb des Blockquotes entfernt wird.

blockquote p:last-child { margin-bottom: 0; }

Beachten Sie, dass :last-child in praktisch allem unterstützt wird, außer in IE 8 und darunter. Wenn dies ein großes Problem darstellt, probieren Sie dies aus.

Oder für bessere Browserunterstützung ohne JavaScript können Sie IE7/IE8-Unterstützung erhalten, indem Sie

blockquote, p { margin-top: 20px; }
blockquote p:first-child { margin-top: 0; }

...verwenden, da beide Browser :first-child, aber nicht :last-child unterstützen.

Kollabierende Ränder

Beachten Sie, dass die obige Situation nur dann eintritt, wenn Sie padding oder border für Ihre Blockquotes verwenden. Wenn Sie nur Margins verwenden, würde dieses Problem nie auftreten. Ein Absatz mit einem unteren Rand von 20 Pixeln, der sich innerhalb eines Blockquotes mit einem unteren Rand von 20 Pixeln befindet, wird seinen Nachbarn im Süden immer noch nur um 20 Pixel nach unten verschieben. Dies ist kein Fehler, sondern normales Margin-Collapsing. Wenn Sie mehr wissen möchten, hat Andy Budd einen Artikel von vor sieben Jahren, der alles enthält, was Sie jemals wissen wollten.