Ein Kompendium von SVG Informationen

Avatar of Chris Coyier
Chris Coyier am

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

Ein riesiger Haufen von Informationen über SVG.

Wie man SVG verwendet

Dies sind Übersichtsartikel, die viele Dinge im Zusammenhang mit SVG behandeln. Warum man es benutzt und die Grundlagen der Anwendung. Hauptsächlich: <img>, background-image, <svg>, <iframe> und <object>/<embed>.

SVG als Icon-System

SVG eignet sich besonders gut für Icons. Neben der Auflösungsunabhängigkeit und den Styling-Möglichkeiten sind die Formen für Icons im Allgemeinen einfach, sodass die Dateigröße winzig ist und sie wie bei einem Sprite oder einer Icon-Schriftart in einer einzigen Webanfrage kombiniert werden können.

Ich habe viel darüber geschrieben

Und mehr von anderen

Das alles basiert auf Inline-SVG als System, was ein fantastischer Weg ist, aber wenn Sie sich für SVG als CSS-Hintergrundbild entscheiden...

  • Filament Groups Grunticon: Artikel, Repo, In-Browser-Tool. Wandelt einen Ordner mit SVGs in SVG-Daten-URIs und Fallbacks von dort aus um. Grunticon 2 kann progressiv bis zu Inline-SVG aufwerten. Sie können auch mit Inline-SVG beginnen und auf Grunticon zurückfallen.
  • Sie können die Füllung bei SVG als Hintergrundbild nicht im laufenden Betrieb anpassen (Grunticon schlägt vor, einfach mehrere Versionen zu erstellen, da GZip damit so effizient ist). Aber hier ist eine clevere Technik von Zach Schnackel, die einen CSS-Präzessor verwendet, um die Datei zu greifen, in eine Daten-URI umzuwandeln und dann die Füllungen durch eine neue Farbe zu ersetzen.
  • Wenn Sie SVG, das als Hintergrundbild verwendet wird, farbig gestalten möchten, ist das etwas schwierig, da Sie in CSS keine direkte Kontrolle darüber haben. Noah Blon hat jedoch einige Techniken.

Und denken Sie daran, wenn Sie nach zu verwendenden SVG-Icons suchen, kann jedes Vektorobjekt verwendet werden. Sie müssen nicht speziell nach „SVG-Icons“ suchen. Selbst bei Icon-Schriftarten können Sie diese Schriftart lokal aktivieren, das gewünschte Zeichen für das Icon eingeben, es in Umrisse konvertieren und als SVG speichern.

Hier sind einige Web-Apps, die in Inline-SVG-Sprites exportieren

SVG-Formensyntax

SVG-Muster

In SVG können Sie Formen mit Farben und Verläufen füllen, aber Sie können auch ein <pattern> angeben, mit dem gefüllt werden soll. <pattern>s sind Gruppen anderer SVG-Elemente, die sich wiederholen, also ist es so etwas wie ein <svg> in Ihrem <svg> zu platzieren.

SVG-Größe (Viewport, viewBox und preserveAspectRatio)

Das Browserfenster, das Sie gerade betrachten, ist ein Viewport. Wenn sich ein <iframe> auf der Seite befände, hätte dieser seinen eigenen Viewport. Das gilt auch für <svg>! Es ist jedoch etwas knifflig, da SVG auch eine viewBox hat, die den tatsächlichen Bereich darstellt, in dem die SVG-Elemente gezeichnet werden. Diese bestimmt zusammen mit preserveAspectRatio, wie und wo die SVG-Elemente innerhalb dieses Viewports gezeichnet werden.

SVG-Verläufe

Während eine fill in SVG nur ein Attribut ist (oder in CSS angewendet wird), sind SVG-Verläufe buchstäblich ein spezielles Element: <linearGradient>. CSS hat ebenfalls Verläufe, aber da SVG-Verläufe (sein können) im DOM vorhanden sind, gibt es möglicherweise Fälle, in denen sie einfacher zu manipulieren sind.

Außerdem funktionieren sie in IE 9, wo CSS-Verläufe nicht funktionieren.

SVG und Fragment-Identifikatoren

Das <use>-Element in SVG ermöglicht es Ihnen, ein SVG-Segment zur Wiederverwendung woanders zu kopieren. Aber das funktioniert nur für Inline-SVG. Wenn Sie nur bestimmte Teile innerhalb einer SVG-Datei in CSS (background-image) oder HTML (<img>) verwenden möchten, benötigen Sie Fragment-Identifikatoren.

SVG-Linienzüge

SVG dreht sich alles um das Zeichnen von Formen. Genau wie in einem Designprogramm wie Adobe Illustrator können Sie diesen Formen Linienzüge sowie Füllungen zuweisen.

SVG und Text

SVG hat ein <text>-Element, das es Ihnen ermöglicht, (Sie ahnten es) Text zu einer Grafik hinzuzufügen. Echter, nativer Webtext, keine Zeichekonturen, was 1) ihn nützlicher macht (auswählbar, durchsuchbar) 2) ihn zugänglicher macht 3) die Größe reduziert. Genau wie regulärer Webtext sind die verfügbaren Schriftarten auf das beschränkt, was auf einem bestimmten Browser/Plattform/Version verfügbar ist oder über @font-face geladen wird.

SVG animieren

Es gibt drei Möglichkeiten, SVG zu animieren. CSS und SMIL sind die „deklarativen“ Methoden, und natürlich kann auch JavaScript dies tun.

SMIL

Die SVG-Syntax verfügt über ein <animate>-Tag speziell dafür, obwohl es etwas kompliziert ist. Dies wird als SMIL (Synchronized Multimedia Integration Language) bezeichnet, und SVG erweitert dies ebenfalls.

CSS

Wenn Sie Inline-SVG verwenden, können Sie auch das SVG (oder darin enthaltene Formen) mit CSS ansprechen und mit CSS-Animationen animieren.

JavaScript

Sie können auch JavaScript verwenden, um SVG zu manipulieren (und damit zu animieren). Sehen Sie auch die Bibliotheken im nächsten Abschnitt. Diese haben tendenziell Animationsfähigkeiten.

Sonstiges

Und nur zum Spaß, schauen Sie sich diese Sammlung von SVG-Animationen von Dennis Gaebel an.

SVG-JavaScript-Bibliotheken

  • D3.js (Data-Driven Documents) von Mike Bostock
  • Snap.svg (Neueres Ding von Dmitry Baranovskiy/Adobe – so etwas wie das „jQuery von SVG“d) (Leitfaden für den Einstieg von Sara Vieira)
  • Raphaël (Älteres Ding von Dmitry Baranovskiy)
  • Bonsai – „Eine leichte Grafikbibliothek mit einer intuitiven Grafik-API und einem SVG-Renderer.“
  • SVG.js von Wout Fierens
  • Fabric.js (SVG-zu-Canvas & Canvas-zu-SVG) von Juriy Zaytsev
  • Two.js – „Eine zweidimensionale Zeichen-API für moderne Webbrowser. Sie ist renderer-unabhängig und ermöglicht die gleiche API, um in mehreren Kontexten zu zeichnen: SVG, Canvas und WebGL.“
  • Paths.js – „Generieren Sie SVG-Pfade für geometrische Formen“
  • VLEX – „Vector Layout Expressions“
  • jQuery kann mit seinen DOM-Manipulationsfähigkeiten Inline-SVG-Attribute ändern und allgemein mit dem SVG-DOM umgehen, hat aber Schwierigkeiten beim Erstellen und Einfügen eines <svg>-Elements, da es den richtigen Namespace nicht verwendet. Lösung: zuerst in einem <div> platzieren.
  • deSVG von Ben Howdle ersetzt <img>-SVG durch Inline-SVG, das es per Ajax lädt, sodass Sie es stylen und all die fantastischen Dinge tun können, die Sie mit Inline-SVG tun können. Vorsicht: doppelte Anfragen.

Diagramme mit SVG

SVG hat keine speziellen Diagrammfunktionen, aber es verfügt über viele Funktionen, die sich gut für die Erstellung von Diagrammen eignen.

Es gibt auch sehr funktionsreiche Bibliotheken, die großartige Diagramme erstellen können. Wie

SVG organisieren

Ähnlich wie es HTML-Tags zur Organisation von Inhalten gibt, gibt es SVG-Tags zur Organisation von Grafiken. Zum Beispiel ist das <g> (Gruppe)-Tag analog zu <div>. Es hat keine große Bedeutung für sich allein, aber es ist nützlich, weil es bedeutet, dass Sie es stylen und diese Stile auf die gesamte Gruppe anwenden lassen können.

SVG und Schriftarten

  • Es gab eine Zeit, da haben @font-face-Generatoren eine .svg-Version von Schriftarten erstellt. Ich glaube, das war für eine bestimmte Generation von iPads erforderlich. Es war nicht wirklich ein eigenes Format, sondern ein weiteres Schriftformat, das in SVG eingebettet war, was es zum Laufen brachte. Ich glaube, wir machen das jetzt nicht mehr oder sprechen darüber.
  • SVG & Farben in OpenType-Schriftarten von Johannes Lang

SVG-Clipping / Maskierung

Sie können Formen/Pfade zeichnen, die verwendet werden, um andere Formen/Pfade auszublenden, die sich innerhalb/außerhalb von ihnen befinden.

SVG-Build-Tools

Eine gängige Methode, mit SVG auf einer Website zu arbeiten, ist die Verwendung eines „Ordners voller SVGs“, die Sie auf der gesamten Website verwenden möchten. Aus Performance-Gründen möchten Sie nicht jede einzeln anfordern. Diese Build-Tools helfen dabei, sie auf die eine oder andere Weise zu kombinieren. Oder sie helfen Ihnen, etwas Nützliches mit SVG zu tun.

In-Browser-Tools

  • IcoMoon von Keyamoon (wählen Sie Icons aus, die Sie verwenden möchten, geben Sie nur diese als SVG-Sprite aus. Ziehen und ablegen auf Ihre eigenen SVGs. Projekt speichern, um es später zu aktualisieren.)
  • Fontastic gibt ebenfalls als SVG-Sprite aus
  • Iconizr von Joschi Kuphal (Repo) (viele Funktionen kombiniert)

Grunt

Gulp

Nur Kommandozeile

SVG zum Verwenden erhalten

Es gibt eine Reihe von Möglichkeiten, um an das benötigte SVG zu gelangen.

  • Lernen Sie die SVG-Syntax. (siehe Abschnitt)
  • Lernen Sie, Vektorbearbeitungssoftware zu verwenden. (siehe Abschnitt)
  • Laden Sie Vektorobjekte aus dem Internet herunter. Denken Sie daran, dass alles Vektorielle in SVG umgewandelt werden kann (z. B. Sie haben vielleicht eine .eps- oder .pdf-Datei, aber sie enthält Vektorobjekte, also öffnen/manipulieren Sie sie in Illustrator, speichern Sie als .svg).
    • Alles auf The Noun Project ist SVG
    • Stockfoto-Websites haben normalerweise eine Möglichkeit, nur Vektorsuchergebnisse zurückzugeben. (z. B. Shutterstock oder Vecteezy)
    • Denken Sie daran, dass Schriftarten Vektoren sind, daher sind Icon-Schriftarten Vektoren, daher kann jedes Icon in einem Icon-Schriftartenset SVG sein. (Schriftart herunterladen und aktivieren, Zeichen in einem Illustrator-Dokument in dieser Schriftart eingeben, in Umrisse konvertieren, als .svg speichern) Hier ist eine große Liste von Icon-Schriftarten von mir.
    • SVGCuts (kostenlose Kategorie)
    • Pinterest Board
    • Foundry: „Bereitstellung einer neuen Generation von Vektor-Assets und unendlichen Möglichkeiten“ von thoughtbot
    • SVG Porn (Logos für beliebte Sachen im SVG-Format)

SVG-Demos

  • SVG Fancy Town: eine Sammlung von Pens, die ich gefunden habe, um etwas Cooles oder Interessantes oder beides im SVG-Bereich zu demonstrieren.
  • Codrops hat eine gute Menge an schönen SVG-Demos
  • SVG Wow
  • Erik Dahlströms /svg/
  • Dynamisch generiertes SVG durch SASS + Ein 3D-animiertes RGB-Würfel! von Lea Verou
  • Patatap – super lustige Demo von Jonathan Brandel, der SVG und Musik mit Ihren Interaktionen animiert.
  • Komplexe SMIL-Animation von rafszul von einem laufenden Wolf.
  • SVG eignet sich gut für die Idee von „responsiven Logos“. Diese von Joe Harrison sind SVG, aber eher wie ein CSS-Sprite, da es sich um vollständige Grafiken handelt, die ausgetauscht werden. Jeremy Frank hat einen Beitrag über das Stylen/Verbergen/Anzeigen/Bewegen der Teile von SVG basierend auf dem verfügbaren Platz.
  • Halbton.svg

    Vermissen Sie die Zeiten, in denen man eine Zeitung mit schönen Halbton-Schwarz-Weiß-Drucken öffnete? Erschaffen Sie diese Magie neu (abzüglich der Tintenflecken und des Papiergeruchs) mit vollständig skalierbaren SVGs.

SVG-Filter

Es gibt CSS-Filter, die vertraute Dinge wie Unschärfe ermöglichen. SVG hat seine eigenen Filter (aus denen die CSS-Filter stammen), die diese vertrauten Dinge, aber auch viel mehr umfassen, einschließlich seltsamer und einzigartiger Dinge, die an Photoshop-Filter erinnern. SVG-Filter können sowohl auf HTML-Inhalte als auch auf SVG-Inhalte angewendet werden.

Daten-URIs und SVG

Einer der Vorteile von Inline-SVG ist die Tatsache, dass keine Webanfrage gestellt werden muss. Die Informationen zum Zeichnen dieses SVG sind direkt vorhanden. Daten-URIs (manchmal „Base 64“-Kodierungen, manchmal tatsächliche <svg>-Syntax (UTF-8)) rendern ebenfalls ohne Anfrage (das ist ja eigentlich der Sinn der Sache).

SVG und CSS

CSS kann Inline-SVG auf die meisten erwarteten Arten beeinflussen. Aber SVG hat auch seine eigenen CSS-Eigenschaften, die nur für es gelten.

  • Eigenschaftenliste (möglicherweise leicht veraltet, da sie sich auf Presto bezieht)
  • SVG-Styling-Eigenschaften auf W3.org
  • SVG-Styling von Dirk Schulze
  • SVG und CSS auf MDN
  • SVG-Icons mit einfachem CSS manipulieren von P.J. Onori
  • Wenn Sie Inline-SVG verwenden und, können Sie Elemente innerhalb desaus CSS ansprechen, aber sie sind sich nicht bewusst von ihrem <svg>-Elternelement, daher können Sie keine unterschiedlichen Klassennamen darauf haben, die bestimmte Elemente im Inneren beeinflussen. Sie können Eigenschaften wie fill nach unten kaskadieren lassen, und es gibt einen Trick, um 2 Farben zu erhalten.
  • Sie können Transformationen direkt auf SVG-Elemente anwenden, wie z. B. transform="translate(2px, 3px)", aber Charlie Marsh entdeckte, dass Sie damit keine so gute Leistung erzielen wie mit CSS-Transformationen auf einem übergeordneten HTML-Element, wie z. B. style="transform:translate(2px, 3px)".

SVG und Beleuchtung

SVG optimieren

Es ist sehr sinnvoll, Bilder vor der Verwendung im Web zu optimieren. Für Rasterbilder können Werkzeuge wie ImageOptim auch nach dem Speichern mit der kleinsten, niedrigsten Qualität, mit der Sie zufrieden sind, weitere Dateigröße einsparen, ohne die Qualität weiter zu beeinträchtigen.

Das Gleiche gilt für SVG!

SVG-Software

Desktop-Software

In-Browser-Software

Mobile apps

SVG-Stuff in Code-Editoren

SVG-Sicherheit

Barrierefreies SVG

Ich bin kein Experte für Barrierefreiheit, aber soweit ich das beurteilen kann, wird SVG von der Barrierefreiheits-Community gut angenommen. Natürlich muss man es immer richtig machen.

SVG und Responsive Design

Hier gibt es einige große Überschneidungen. Erstens passt die inhärente Flexibilität, Schärfe und geringe Dateigröße von SVG philosophisch gut zum Cross-Device-Denken des Responsive Designs. Zweitens, da SVG eigene Viewports haben, sind CSS-Media-Queries darin eine Art mythische "Element-Queries", da sie auf sich selbst basieren.

SVG und JavaScript

Einer der Vorteile von SVG ist, dass die Formen im DOM vorhanden sind. Zum Beispiel könnte ein <svg> ein <rect> und einen <circle> haben. Über JavaScript könnten Sie einen Event-Handler an nur das <rect> und einen anderen an nur den <circle> binden.

SVG und Rastergrafiken

SVG und CMSs

SVG Browser-Support

SVG wird in allen aktuellen Versionen aller Browser und einigen älteren Versionen unterstützt. Die größte Sorge sind generell IE 8 und älter, sowie Android 2.3 und älter. Aber das ist nur grundlegende SVG-Unterstützung (inline, <img>, CSS-Hintergrund). Es gibt Unterfunktionen von SVG, die unterschiedliche Browserunterstützungsstufen haben. Can I Use… tut einen guten Job, diese Dinge zu verfolgen.

SVG-Fallbacklösungen

Wenn Sie Browser unterstützen müssen, die alt genug sind, um SVG nicht zu unterstützen (siehe Abschnitt Browser-Support), gibt es viele Möglichkeiten, Fallback-Lösungen für funktionierende Ressourcen zu implementieren (z.B. image.svg durch image.png oder Ähnliches ersetzen).

SVG-Spezifikationen

Das W3C beaufsichtigt die Syntax, die die Implementierung von SVG in Browsern leitet. Es gibt technisch eine ganze SVG Working Group. SVG 1.1 ist final, SVG 2 ist im Entwurf. (Eine kleine Geschichte von Amelia Bellamy-Royds: Eine kleine Geschichte).

  • SVG 1.1 (Empfehlungsstatus)
  • SVG Tiny 1.2 (Wird meines Wissens nicht wirklich verwendet, auch wenn man es aus Illustrator exportieren kann. Es war für Dinge wie alte Blackberrys gedacht)

    SVG 1.2 Tiny ist ein Profil von SVG, das für die Implementierung auf einer Reihe von Geräten bestimmt ist, von Mobiltelefonen und PDAs bis hin zu Laptops und Desktop-Computern, und enthält daher eine Teilmenge der Funktionen, die in SVG 1.1 Full enthalten sind.

  • SVG 2 (Status des Herausgeberentwurfs, auch hier) wird anscheinend Dinge wie Strichpositionierung (innen, außen, mitte) haben.

    Diese Version von SVG baut auf SVG 1.1 Second Edition auf, indem sie die Benutzerfreundlichkeit der Sprache verbessert und neue Funktionen hinzufügt, die von Autoren häufig angefordert werden.

    Wo wir gerade von SVG 2 sprechen, hier diskutiert Tavmjong Bah einige neue Funktionen. Ich habe gehört, z-index kommt auch in SVG 2, aber im Moment muss man die Quellreihenfolge ändern, um das zu replizieren.

  • Es gibt auch spezielle Spezifikationen für Marker und Striche.

SVG-Vorträge

Es gibt viel zu besprechen! Besonders jetzt, da die Browserunterstützung für SVG heutzutage so allgegenwärtig ist.

Folien

Vorträge als Videos

Podcasts

  • Doug Schepers über The Web Ahead mit Jen Simmons
  • ShopTalk 129: Mit Sara Soueidan

SVG-Bücher

SVG-Bugs

Hoffentlich ist inzwischen klar, dass SVG ein riesiges Universum für sich ist. Es gibt so viele Funktionen, und Funktionen kombiniert mit anderen Funktionen und anderen Technologien, es ist kein Wunder, dass es Bugs und Browser-Inkonsistenzen gibt.

Sonstiges

Obligatorische Zufälligkeiten!

SVG 2