Ich frage mich nur, ob es irgendwie möglich ist, die CSS- content
Eigenschaft dazu zu bringen, HTML-Code anstelle eines Strings :before
oder :after
eines Elements wie dem folgenden einzufügen :
.header:before{
content: '<a href="#top">Back</a>';
}
das wäre ziemlich praktisch ... Es könnte über Javascript gemacht werden, aber die Verwendung von CSS würde das Leben wirklich einfacher machen :)
html
css
pseudo-element
css-content
Zanona
quelle
quelle
Antworten:
Das geht leider nicht. Gemäß der Spezifikation :
Mit anderen Worten bedeutet dies für Zeichenfolgenwerte, dass der Wert immer wörtlich behandelt wird. Es wird unabhängig von der verwendeten Dokumentsprache niemals als Markup interpretiert.
Verwenden Sie beispielsweise das angegebene CSS mit dem folgenden HTML-Code:
... führt zu folgender Ausgabe:
<a href="#top"> Zurück </a> Titel
quelle
url
Attributen bereits unterstützt werden, wäre das Hinzufügen eines Links in dieser Perspektive nicht so anders.<img>
), sondern nur auf vorhandene Elemente gezeichnet werden. Wenn Sie also Hintergrund- oder Listenbilder anwenden, ändern Sie das DOM nicht wirklich.url()
stattdessen wie bei jedem anderen Bild eine externe Datei über angeben .Wie in den Kommentaren zur Antwort von @ BoltClock fast erwähnt , können Sie in modernen Browsern Pseudoelementen mithilfe von (
url()
) in Kombination mit dem<foreignObject>
Element von svg tatsächlich ein HTML-Markup hinzufügen .Sie können entweder eine URL angeben, die auf eine tatsächliche SVG-Datei verweist, oder sie mit einer dataURI-Version (
data:image/svg+xml; charset=utf8, + encodeURIComponent(yourSvgMarkup)
) erstellen.Beachten Sie jedoch, dass es sich meistens um einen Hack handelt und dass es viele Einschränkungen gibt:
document.styleSheets
. für diesen TeilDOMParser
undXMLSerializer
kann helfen .<img>
Tags ermöglicht, funktioniert dies in Pseudoelementen nicht (zumindest ab heute weiß ich nicht, ob es irgendwo angegeben ist, wo es nicht angegeben werden sollte, also kann es sein eine noch nicht implementierte Funktion sein).Nun eine kleine Demo eines HTML-Markups in einem Pseudoelement:
quelle
url('/relativePathToMySvg/mySvg.svg')
und es hat nicht funktioniert/root/css/yourFile.css
, zeigt ein relativer funcIRI-ähnlicher WertyourFile.svg
auf/root/css/yourFile.svg/
. Aber ich denke, ich erinnere mich, dass einige frühere UA einen Fehler hatten und ihn relativ zur baseURI des Dokuments machten. Der sicherste Weg ist also, nur den absoluten Pfad zu verwenden.content: url('../../images/como-funciona.svg');
und es funktioniert gutIn CSS3-Medien ist dies mit
position: running()
und möglichcontent: element()
.Beispiel aus dem Entwurf des CSS-generierten Inhalts für ausgelagerte Medienmodule :
.runner kann ein beliebiges Element sein und
heading
ist ein beliebiger Name für den Slot.BEARBEITEN: Zur Verdeutlichung gibt es im Grunde keine Browserunterstützung, daher war dies hauptsächlich als zukünftige Referenz gedacht / zusätzlich zu den bereits gegebenen "praktischen Antworten".
quelle