::before / ::after

Avatar of Sara Cope
Sara Cope am

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

Die Pseudo-Elemente ::before und ::after in CSS ermöglichen es Ihnen, Inhalt auf einer Seite einzufügen, ohne dass dieser im HTML vorhanden sein muss. Obwohl das Endergebnis nicht wirklich im DOM ist, erscheint es auf der Seite so, als wäre es das, und würde im Wesentlichen so aussehen

div::before {
  content: "before";
}
div::after {
  content: "after";
}
<div>
  before
  <!-- Rest of stuff inside the div -->
  after
</div>

Die einzigen Gründe, das eine dem anderen vorzuziehen, sind

  • Sie möchten, dass der generierte Inhalt positionell vor dem Elementinhalt erscheint.
  • Der ::after-Inhalt ist auch in der Quellreihenfolge "nach", sodass er sich natürlich über ::before positioniert, wenn sie übereinander gestapelt sind.

Beachten Sie, dass der Inhalt immer noch innerhalb des Elements ist, auf das sie angewendet werden. Die Benennung vermittelt den Eindruck, als kämen sie, nun ja, vor oder nach dem Element, aber es ist wirklich vor oder nach dem anderen Inhalt im Inneren.

Der Wert für content kann sein

  • Eine Zeichenkette: content: "a string"; — Sonderzeichen müssen speziell als Unicode-Entität kodiert werden. Siehe die Seite über Glyphen.
  • Ein Bild: content: url(/path/to/image.jpg); — Das Bild wird in seinen genauen Abmessungen eingefügt und kann nicht in der Größe geändert werden. Da Dinge wie Verläufe eigentlich Bilder sind, kann ein Pseudo-Element ein Verlauf sein.
  • Nichts: content: ""; — Nützlich für Clearfixes und das Einfügen von Bildern als background-image (setzen Sie width und height, und können sogar mit background-size in der Größe geändert werden).
  • Ein Zähler: content: counter(li); — Wirklich nützlich zum Formatieren von Listen (aber wir haben auch ::marker dafür).
  • Ein Zeilenumbruch: content: "Killing \A Me \A Softly"; — Großartig, wenn Sie wirklich einen brauchen.

Beachten Sie, dass Sie HTML-Entitäten in die content-Eigenschaft einfügen können, aber diese werden nicht gerendert oder Ähnliches.

content: "<h1>I will not render as a Heading 1</h1>";

: vs ::

Jeder Browser, der die Doppelpunkt-Syntax (::) von CSS3 unterstützt, unterstützt auch einfach die (:) Syntax, aber Internet Explorer (IE) 8 unterstützt nur den Einzelpunkt, daher wird derzeit empfohlen, einfach den Einzelpunkt für die beste Browserunterstützung zu verwenden.

:: ist das neuere Format, das Pseudo-Inhalt von Pseudo-Selektoren unterscheiden soll. Wenn Sie IE 8-Unterstützung nicht benötigen, können Sie gerne den Doppelpunkt verwenden.

Browser-Unterstützung

Diese Browser-Unterstützungsdaten stammen von Caniuse, das mehr Details enthält. Eine Zahl gibt an, dass der Browser die Funktion ab dieser Version unterstützt.

Desktop

ChromeFirefoxIEEdgeSafari
429123.1

Mobil / Tablet

Android ChromeAndroid FirefoxAndroidiOS Safari
1271272.13.2

Tricks, die ::before und after verwenden

Weitere Informationen