Wenn eine SVG mithilfe des <svg>
Tags direkt in ein Dokument aufgenommen wird , können Sie CSS-Stile über das Stylesheet des Dokuments auf die SVG anwenden. Ich versuche jedoch, einen Stil auf eine eingebettete SVG anzuwenden (mithilfe des <object>
Tags).
Ist es möglich, etwas wie den folgenden Code zu verwenden?
object svg {
fill: #fff;
}
Antworten:
Kurze Antwort: Nein, da Stile nicht über Dokumentgrenzen hinweg gelten.
Da Sie jedoch ein
<object>
Tag haben, können Sie das Stylesheet mithilfe eines Skripts in das SVG-Dokument einfügen.So etwas wie das, und beachten Sie, dass dieser Code davon ausgeht, dass der
<object>
vollständig geladen wurde:Es ist auch möglich, ein
<link>
Element einzufügen , um auf ein externes Stylesheet zu verweisen:Eine weitere Option besteht darin, die erste Methode zu verwenden, ein Stilelement einzufügen und dann eine @ import-Regel hinzuzufügen, z
styleElement.textContent = "@import url(my-style.css)"
.Natürlich können Sie auch direkt aus der SVG-Datei auf das Stylesheet verlinken, ohne Skripte zu erstellen. Beides sollte funktionieren:
oder:
Update 2015: Sie können das jquery-svg- Plugin verwenden, um js-Skripte und CSS-Stile auf eine eingebettete SVG anzuwenden.
quelle
Sie können dies ohne javsscrpt tun, indem Sie einen Stilblock mit Ihren Stilen in die SVG-Datei selbst einfügen.
quelle
Wenn der einzige Grund für die Verwendung des Tags zum Einschließen der SVG darin besteht, dass Sie Ihren Quellcode nicht mit dem Markup aus der SVG überladen möchten, sollten Sie sich SVG-Injektoren wie SVGInject ansehen .
Die SVG-Injektion verwendet Javascript, um eine SVG-Datei in Ihr HTML-Dokument einzufügen. Dies ermöglicht einen sauberen HTML-Quellcode, während die SVGs mit CSS vollständig stilisiert werden können. Ein einfaches Beispiel sieht so aus:
quelle