Die Vor- und Nachteile von Inline- und externem SVG-Styling
Veröffentlicht: 2022-11-29Wenn es um das Styling von Vektorgrafiken geht, gibt es im Wesentlichen zwei Möglichkeiten: Inline oder extern. Inline-Stile sind solche, die direkt in den SVG-Code geschrieben werden, während externe Stile solche sind, die in eine separate CSS-Datei geschrieben und dann vom SVG-Code referenziert werden. Beide Ansätze haben Vor- und Nachteile, aber im Allgemeinen ist die Verwendung externer Stile der beste Weg. Das liegt daran, dass Sie Ihren SVG-Code sauber und übersichtlich halten können und es außerdem einfacher ist, Stile in mehreren SVG-Dateien wiederzuverwenden. Hier ist ein kurzer Überblick darüber, wie man SVG mit einem separaten Stylesheet gestaltet: 1. Erstellen Sie eine CSS-Datei und fügen Sie Ihre Stile hinzu. 2. Fügen Sie im Abschnitt Ihres SVG-Codes einen Verweis auf Ihre CSS-Datei hinzu. 3. Wenden Sie die Stile auf die gewünschten Elemente in Ihrem SVG-Code an. Und das ist alles, was dazu gehört! Die Verwendung eines separaten Stylesheets ist eine großartige Möglichkeit, Ihren SVG-Code sauber und organisiert zu halten, und es erleichtert auch die Wiederverwendung von Stilen in mehreren Dateien. Probieren Sie es aus und überzeugen Sie sich selbst.
Mithilfe von XML können Sie einfache SVG-Dateien erstellen . Infolgedessen gibt es eine Fülle von XML-Bibliotheken, die dies erreichen können. Wenn Sie Ihr SVG in anderen Dateien speichern möchten, müssen Sie das CSS darin definieren. Obwohl Sie tun können, was Sie wollen, besteht ein (kritischer) Vorbehalt darin, dass die Pfade innerhalb Ihres Symbols nicht unabhängig mit CSS gestaltet werden können. Durch Mischen und Anpassen von externem CSS und Inline-CSS können Sie das Problem umgehen, dass Sie die Pfade in Ihrem Symbol separat mit externem CSS ansprechen können. Wenn Sie diese Methode verwenden möchten, sollten Sie ein weißes Symbol und einen farbigen Hintergrund verwenden, aber das Symbol selbst ist immer weiß (oder umgekehrt). Mit anderen Worten, der HTML-Code gestaltet eher das img-Tag als den SVG-Code.
Grafiken mit einer schwarzen, weißen oder grauen Füllung funktionieren nicht. Eine externe CSS-Datei könnte verwendet werden, um dies zu gestalten, wenn Sie das HTML-Tag wählen. Wenn Sie eine SVG-Datei aus einer nicht vertrauenswürdigen Quelle inline laden, können Sie beliebige Skripte, CSS und andere Elemente in Ihren HTML-Code einfügen, wodurch Ihre Sandbox beschädigt wird. In diesem Fall müssen Sie die.svg-Datei in das DOM des Dokuments einfügen oder inline, entweder innerhalb des HTML-Codes oder damit. Die.js-Funktion wird übergeben, nachdem das Element geladen wurde, was genauso gut funktionieren sollte wie img-Tags im DOM (oder eine ähnliche Methode). Das Dokument hat kein Javascript, keinen Server-Code und keine Root-ID. Danach können wir es mit einem SVG2-Tag verwenden, das anscheinend von Chrome/Edge unterstützt wird – Blink; Firefox – Gecko; und Safari – Webkit. Wenn Sie Angst haben, Icon-Fonts zu verwenden, gibt es keinen besseren Weg, dies ohne sie zu tun: Gehen Sie folgendermaßen vor: Wenn Sie später daran interessiert sind, die Farbe der SVG-Datei zu ändern, können Sie diese Datei als PHP-Dateinamen verwenden.
Dank des Elements „style“ (*style) können Stylesheets direkt in SVG-Inhalte eingebettet werden. style>, das style-Element von HTML, enthält dieselben Attribute wie das style-Element von SVG (weitere Informationen finden Sie unter style>-Element von HTML).
Bei Verwendung des Tags [svg] /svg[/svg] kann das HTML-Dokument dynamisch mit SVG-Bildern generiert werden. Sie können dies tun, indem Sie die SVG-Datei in Ihrem VS-Code oder Ihrer bevorzugten IDE öffnen, den Code kopieren und ihn in das body-Element in Ihrem HTML-Dokument einfügen. Wenn alles glatt gelaufen ist, sollten Sie Ihre Webseite genauso sehen wie im folgenden Beispiel.
Bei Verwendung in CSS können wir SVG als Daten-URI verwenden, aber es kann nur in Webkit-basierten Browsern ohne Codierung darauf zugegriffen werden. Die Methode encodeURIComponent() stellt sicher, dass SVG überall codiert wird. XMLns mit diesem Attribut müssen in SVG vorhanden sein: XMLns ='http: //www.w3.org/2000/svg'.
Können Sie CSS verwenden, um SVG zu stylen?
Skalierbare Vektorgrafiken (SVG) sind in einer Vielzahl von Formaten verfügbar, aber nur bestimmte Attribute können in einer Vektorgrafik in CSS umgewandelt werden. Beim Stylen von SVG-Elementen können die Präsentationsattribute auch in CSS-Eigenschaften verwendet werden. Während einige dieser Attribute nur für SVG gelten, werden andere bereits in CSS geteilt, wie z. B. Schriftgröße oder Transparenz.
Das Instanziieren eines Symbols oder eines anderen SVG-Elements oder -Bilds mit dem >use>-Element kann schwierig sein. In diesem Artikel sehen wir uns an, wie Sie die durch die >use>-Option eingeführten Styling-Einschränkungen überwinden können. In SVG werden die vier Hauptelemente definiert, strukturiert und referenziert. Wenn Sie eine Vorlage erstellen, können Sie einige Elemente mit der Option >defs> definieren. Das Element im Dokument stellt eine Vorlage dar, auf die an anderer Stelle im Dokument verwiesen wird, und wird verwendet, um Elemente zu organisieren, die diese Vorlage definieren. Durch die Verwendung des use-Elements können Sie Elemente wiederverwenden und in einem Grafikeditor dasselbe tun wie in einer Anwendung zum Kopieren und Einfügen. Was bedeutet Schatten-DOM?
Gibt es eine Möglichkeit, dieses Teildokument zu inspizieren, um tatsächlich in sein Innenleben zu sehen? In diesem Element befindet sich ein Klon von sich selbst. Die Entwicklertools von Chrome können verwendet werden, um den Inhalt eines Schatten-DOMs zu untersuchen. Klicken Sie dazu auf das Zahnradsymbol auf der Registerkarte „Allgemein“ des Bedienfelds „Einstellungen“ und aktivieren Sie dann die Shadow-DOM-Inspektion. Das Schatten-DOM hingegen verhält sich im Umgang mit CSS und JavaScript anders als das Hauptdokument, sodass Sie nicht erkennen können, ob es sich um ein normales oder ein Schatten-DOM handelt. Es ist nicht möglich, auf den Pfadnachfolger dieser Funktion abzuzielen. Da reguläre CSS-Selektoren nicht verfügbar sind, können wir nicht auf das Schatten-DOM zugreifen.
Präsentationsattribute werden häufig verwendet, um eine CSS-Eigenschaft für ein Element anzugeben. Sie tragen aufgrund ihrer Natur in gewisser Weise zur Stilkaskade bei, aber es ist nicht immer wie erwartet. Bei den Präsentationsattributen wird ein Autoren-Stylesheet auf niedriger Ebene verwendet, und jede andere Stildefinition kann sie überschreiben. Nur übererbte Stile sind in der Stilkaskade vorhanden, die das einzige Leistungspräsentationsattribut ist. Stile erben Stile von ihren Vorfahren, genauso wie sie es von den Elementen des Elements tun. Das Präsentationsattribut wird durch keine andere Stildeklaration definiert. Wir können diese Methode verwenden, indem wir erzwingen, dass der Wert des Präsentationsattributs durch eine externe Stildeklaration überschrieben wird.
Daher ist die Verwendung des CSS-Schlüsselworts inherit recht einfach. Sehen Sie sich das folgende Beispiel eines Eiscremesymbols an, das nur aus einem Pfad besteht, dessen Füllfarbe für eine andere Anwendung geändert werden kann. Der Inhalt von CSS all Property kann äußerst nützlich sein, aber es ist eine extreme Maßnahme. Im Wesentlichen gibt diese Deklaration die Werte der Eigenschaften jedes Elements von seinem Vorfahren zurück. Es funktioniert in jedem Browser, der die Eigenschaft all unterstützt (weitere Informationen finden Sie im Eintrag der Eigenschaft). Wenn wir die CSS-Variable currentColor verwenden, können wir zwei verschiedene Farben für ein Element angeben, anstatt nur eine. Der Zweck dieser Technik besteht darin, die Füll- und Farbeigenschaften bei >use> so zu kombinieren, dass Farben basierend auf der variablen Natur von currentColor in den Inhalt der Seite kaskadieren.
Wir werden die Variable currentColor verwenden, um den Farbwert für jeden Tropfen im Vordergrund anzugeben, wie in der color-Eigenschaft angegeben. Einfache zweifarbige Logos können stark von dieser Technik profitieren. Amelia Bellamy-Royds stellte dieses Konzept erstmals vor etwas mehr als einem Jahr in einem Codepen-Blogbeitrag vor. Wenn Sie CSS-Variablen verwenden, kann der Inhalt eines Elements gestaltet werden, ohne dass der Browser gezwungen werden muss, irgendwelche Präsentationsattributwerte zu überschreiben. Variablen, die Entitäten sind, die Webseiten basierend auf ihren spezifischen Werten definieren, werden von den Autoren oder Benutzern erstellt. Sie werden häufiger verwendet und tun Dinge, die Präprozessorvariablen trotz ihrer Ähnlichkeit mit CSS-Präprozessorvariablen (wie Sass) nicht können. Mit mehreren Kopien des Bildes können Sie eine Reihe von Farben zur Verwendung auswählen und verschiedene Themen basierend auf der Verwendung des Bildes erstellen.
Es ist besonders nützlich, wenn Sie beabsichtigen, ein Logo auf verschiedene Arten zu gestalten, z. B. in einem kontextspezifischen Kontext oder für einen anderen ähnlichen Zweck. Es besteht immer noch die Möglichkeit, die Füll- und Farbeigenschaften in Verbindung mit diesen Variablen einzubeziehen, aber möglicherweise müssen oder möchten Sie dies nicht. Wenn der Wert einer Variablen nicht geladen wird, kehrt der Browser zu seiner ursprünglichen Farbe zurück, die im Markup angegeben ist. Jede neue Instanz hat ihr eigenes Farbthema basierend auf dem im CSS festgelegten Wert. Durch die Verwendung von CSS-Kaskaden können Sie die Gestaltung des Inhalts von >use> vereinfachen. Unsere Grafiken können mithilfe von CSS-Variablen, die wir in das Shadow-DOM einfügen können, an unsere Spezifikationen angepasst werden. Sie sind derzeit nur in Firefox verfügbar, aber Sie können sie so schnell wie möglich in anderen Browsern abstimmen. Es gibt bereits Diskussionen über die zukünftige Verwendung von CSS-Variablen als SVG-Parameter , sodass wir sie möglicherweise sogar auf andere Weise verwenden können.
Bilder im SVG-Format werden als SVG-Dateien angezeigt. Um zu ändern, wie ein SVG-Bild in einem Browser angezeigt wird, müssen Sie eine der drei unten aufgeführten Methoden verwenden. Wenn Sie *object> verwenden, wird das SVG als aaobject platziert und CSS und Javascript werden verwendet, um es zu steuern. Mit *iframe/ können CSS und Javascript verwendet werden, um das SVG zu steuern, wenn es als Dokumentobjekt mit *svg geladen wird. Um die Farbe eines SVG-Bildes zu ändern, müssen Sie zunächst eine Fülleigenschaft in das svg-Tag eingeben. Danach kann die Farbe per CSS geändert werden. Nachdem die Fülleigenschaft festgelegt wurde, wird die Farbeigenschaft eines Elements oder des übergeordneten Elements eines SVG-Tags angewendet.
Die Vor- und Nachteile von SVG und CSS
Beide Formate haben Vor- und Nachteile. Es ist vielseitiger und kann detaillierter sein, aber es ist schwieriger, damit zu arbeiten. CSS hingegen ist einfacher und erfordert nicht so viel Fingerspitzengefühl, ist aber möglicherweise nicht so vielseitig wie CSS.
Können SVG-Grafiken mit CSS skaliert werden?
Wenn Sie CSS verwenden, um die Höhe oder Breite Ihres SVG festzulegen, müssen die Höhen- und Breiteneigenschaften von *svg Um Ihnen die standardmäßige Inline-SVG-Höhe zu geben, muss svg (*width: 100%; height: auto;*) als festgelegt werden eine Regel, die die im Code angegebenen Abmessungen und das Seitenverhältnis aufhebt.
Die folgenden Schritte helfen Ihnen beim Hochskalieren Ihrer Vektorgrafiken. Amelia Bellamy-Royds gibt eine detaillierte Erklärung zur Skalierung von SVG. Obwohl es nicht so einfach ist wie Rastergrafiken zu skalieren, können Sie damit interessante Anwendungen erstellen. Anfänger werden überrascht sein, wie einfach es ist, das Verhalten der SVG-Datei zu ändern. Das Seitenverhältnis eines Fotos in Rasterbildern ist das Verhältnis seiner Breite zu seiner Höhe. Der Browser kann ein Rasterbild mit einer anderen Größe als seiner eigentlichen Höhe und Breite zeichnen, aber es kann auch Dinge verzerren, wenn es mit einem anderen Seitenverhältnis gezeichnet wird. Inline-SVGs werden normalerweise in der im Code angegebenen Größe gezeichnet, unabhängig von der Leinwandgröße.
ViewBox ist die letzte Software, die skalierbare Vektorgrafiken (SVG) erstellt. Das viewBox-Element ist ein Eigenschaftselement im elements.svg()-Element. In seiner einfachsten Form ist es eine Liste von vier Zahlen, die durch Leerzeichen oder Kommas getrennt sind: x, y, Breite und Höhe. Für die linke Ecke des Ansichtsfensters definieren x und y das Koordinatensystem. Die Höhe kann berechnet werden, indem die Anzahl der Zeichen/Koordinaten, die erforderlich sind, um eine verfügbare Höhe auszufüllen, mit einer gegebenen Höhe multipliziert wird. Wenn Sie dem Bild Abmessungen geben, die nicht dem Seitenverhältnis entsprechen, wird es nicht gestreckt oder verzerrt. Mit der CSS-Eigenschaft object-fit, die auch mit anderen Bildtypen verwendet werden kann, können Sie dasselbe tun.
Außerdem haben Sie die Möglichkeit, AspectRatioLastBeforeScale=”none” zu setzen, wodurch Ihr Bild auf die gleiche Größe wie ein Rasterbild skaliert wird. Die Breite oder Höhe eines Bildes kann mit der Rasterbildskalierung angepasst werden. Kann man das über sva bekommen? Im Laufe der Monate wird es noch schwieriger. Die Verwendung der automatischen Bildgrößenanpassung mit einer >img>-Datei ist ein guter Anfang, aber das Hacken ist etwas schwieriger. Durch die Verwendung einer Vielzahl unterschiedlicher CSS-Eigenschaften können Sie das Seitenverhältnis eines Elements anpassen, indem Sie seine Höhe und seinen Rand anpassen. Andere Browser setzen die Bildgröße automatisch auf 300*150, wenn sie eine viewBox haben; dieses Verhalten ist in keiner Spezifikation definiert.
Wenn Sie die neuesten Blink/Firefox-Browser verwenden, können Sie die Größe des Bildes ändern, damit es in die viewBox passt. Wenn Sie weder Höhe noch Breite angeben, werden die Standardgrößen dieser Browser eingestellt. Ein Containerelement ist die einfachste Möglichkeit, Elemente wie SVG und >object> zu ersetzen, die in SVG eingebettet sind. Die offizielle Höhe wird laut einer Inline-Grafik (höchstens) Null sein. Mit dem Standardwert "preserveRatioAspect" würde die Grafik auf nichts skaliert. Sie ziehen es vor, Ihre Grafik so zu dehnen, dass sie die gesamte von Ihnen bereitgestellte Breite abdeckt, und sie auf den Polsterbereich zu verteilen, den Sie sorgfältig für das richtige Seitenverhältnis eingerichtet haben. Mit ViewBox und PreserveRatioAspect können Sie äußerst anpassungsfähige Ansichten erstellen. verschachtelte Elemente können verwendet werden, um einzelne Teile Ihrer Grafikskala zu trennen und sie in ihrer eigenen eindeutigen Reihenfolge darzustellen, indem Sie die Skalierungsattribute jedes Elements verwenden. Das Ziel dieses Ansatzes besteht darin, eine Kopfzeilengrafik zu erstellen, die sich erstreckt, um eine Breitbildanzeige abzudecken, ohne deren Höhe zu beeinträchtigen.
Greensock und Fuse sind zwei Animationstools, mit denen wir Animationen erstellen können.
Mit den Tweening-Funktionen von Greensock können Sie schnell und einfach Animationen erstellen.
Die Fuse-Bibliothek enthält eine Reihe von Animationen, die einfach erstellt werden können, indem eine Reihe von zu animierenden Objekten bereitgestellt wird.
Skalieren von Bildern mit SVG
Standardmäßig kann die viewBox-Einstellung verwendet werden, um ein SVG-Bild zu skalieren, ohne sein Layout zu ändern. viewBox wird verwendet, um ein Koordinatensystem für das SVG-Bild und seine Abmessungen anzugeben. Eine viewBox kann so konfiguriert werden, dass sie mit jedem Koordinatensystem funktioniert, einschließlich des aktuellen Koordinatensystems des Benutzers. Dadurch können Sie ein SVG-Bild skalieren, ohne sein Layout zu ändern. ViewBox = viewBox ist der Name der viewBox. Dies ist eine Darstellung einer Null 100.
So gestalten Sie SVG-Css
Beim Stylen einer SVG mit CSS sind einige Besonderheiten zu beachten. Erstens, weil SVGs Vektorbilder sind, können sie ohne Qualitätsverlust unendlich skaliert werden. Das bedeutet, dass das CSS so geschrieben werden muss, dass dies ausgenutzt wird. Zweitens können SVGs sowohl mit Inline-CSS als auch mit externem CSS gestaltet werden. Inline-CSS wird direkt in den HTML-Code geschrieben, während externes CSS in eine separate Datei geschrieben und mit dem HTML-Code verknüpft wird.
Wenn Features mit SVG (skalierbare Vektorgrafiken) gezeichnet werden, kann das CSS-Styling der Kartenebenen verwendet werden. Renderer und Symbole hingegen sind für Entwickler, die an CSS gewöhnt sind, weniger attraktiv. CSS kann nicht verwendet werden, um andere Vektorzeichnungsmethoden zu unterstützen, die in älteren Browsern wie Canvas, VML und anderen verwendet werden. Das Stylen von Features mit CSS kann auf verschiedene Weise erfolgen. Die integrierte Skalierungsmethode von D3 kann verwendet werden, um unsere Daten in Buckets zu sortieren und dann mithilfe des D3-Toolkits Stile auf jeden Bucket anzuwenden. Da Styling in der Klasse Graphic auf false gesetzt ist, können eine Reihe neuer Datenattribute standardmäßig hinzugefügt werden. Stile werden mithilfe der JS-API auf Renderer auf die gleiche Weise angewendet wie Stile auf Pfadelemente angewendet werden. Ein Attributwert wird verwendet, um Knoten mit einem Datenattribut zu gestalten, das zum Definieren von Klassengrenzen verwendet wird, und einem Label, das zum Definieren von Labels verwendet wird. Wir können Pseudoselektoren wie:hover verwenden, um bei der Verwendung von CSS einen Hover-Effekt zu einer Seite hinzuzufügen.
Der Effektbereich des SVG-Editors enthält eine Reihe von Filtern, die verwendet werden können. Filter können verwendet werden, um die Farben, Formen und Deckkraft des Svega zu ändern. Darüber hinaus können einige erweiterte Filter verwendet werden, um komplexere Effekte zu erzeugen.
Style-Svg mit externem CSS
Eine Möglichkeit, ein SVG mit externem CSS zu gestalten, ist die Verwendung von