SVG-Symbole im Vergleich zu PNG-Symbolen in modernen Websites

Lesezeit: 10 Minuten

Benutzer-Avatar
Robert Goldwein

Ich frage mich, warum so wenige moderne Websites immer noch nur PNGs für Symbole verwenden (aber diese Annahme basiert nur auf meiner Beobachtung). Soweit ich weiß, sind die Hauptgründe für die Verwendung von PNGs über SVGs der IE8 und dass SVG mehr CPU-Leistung verbraucht (aber ich glaube nicht, dass dies für einfache 1K-Symbole ein Problem darstellt). Ich sehe (und nutzen wir derzeit) viele Vorteile bei der Verwendung von SVGs, entweder wenn sie als Sprites, als Bilder oder als Inline-SVG verwendet werden.

(Frage auf der Suche nach einer Recherche: PNG-Sprite vs. SVG-Sprite vs. Icon-Fonts konzentriert sich auf die Leistung und hat keine relevante Antwort, Icon Font vs. SVG-Caching und Netzwerkbedenken konzentrieren sich auf den Netzwerkverkehr, aber es ist leicht lösbar, z. B. durch Templating.)

Wenn die neue Website nur moderne Browser unterstützt, gibt es einen Grund, SVGs nicht zu verwenden (oder – gibt es einen Grund, PNGs für Symbole zu verwenden)? Wenn wir uns nicht um IE8 kümmern und die Verwendung von SVG durch Templating und/oder Caching unterstützt wird, gibt es dann einen Haken, sich nur auf SVGs zu verlassen?

  • Sehr geehrter Down-Voter, würden Sie mir bitte mitteilen, was speziell auf dieser Frage basiert, worum ich gebeten habe Spezifisch – technische – Gründe? Ich würde mich über ein solches Feedback freuen, damit ich meine weiteren Fragen verbessern kann.

    – Robert Goldwein

    26. Juni 2014 um 15:18 Uhr


  • Robert, es scheint nicht meinungsbasiert zu sein, aber die Leute verfallen manchmal in den Zombie-Modus und überfliegen Fragen nur, ohne sie wirklich zu lesen.

    – Räuber

    26. Juni 2014 um 16:08 Uhr

  • Ich bevorzuge PNG der Einfachheit halber und ein saubereres DOM. Ein Punkt, der zu den folgenden Antworten hinzugefügt werden sollte, ist, dass Sie mit SVG die Farbe dynamisch ändern können. Wenn ein Symbol drei Farben hat: Normal, Aktiv und Hover, sind das 3 PNG-Bilder, aber nur ein SVG.

    – CodeKröte

    15. Januar 2019 um 7:55 Uhr

  • @Robert [ZOMBIE MODE] ist ein ausgezeichneter Mann 🙂 😀

    – QMaster

    23. Dezember 2019 um 9:42 Uhr


Benutzer-Avatar
Räuber

Gründe, warum SVG eine gute Wahl sein kann:

  • Es unterstützt nahtlos Browser jeder Größe, insbesondere mit CSS background-size
  • Sie können sie nach oben/unten skalieren, z. B. zu a Schwebeeffekt
  • Sie können SVGs einbetten und mit JavaScript und dem DOM in Echtzeit Änderungen daran vornehmen
  • Sie können SVGs und Teile von SVGs mit CSS stylen (Ändern von Farben, Umrissen usw.)
  • Sie können SVGs entweder auf dem Client oder Server dynamisch generieren. Aufgrund ihrer textbasierten Natur benötigen Sie keine Low-Level-Bibliotheken oder leistungsstarke Server, um sie zu erstellen.

Gründe, warum PNG eine gute Wahl sein könnte:

  • Browserunterstützung
  • vorhandene Tools zum Erstellen von PNG-Spritesheets
  • Die meisten Leute haben einen PNG-kompatiblen Editor auf ihrem Computer
  • Ihre Grafiken sind Fotos oder andere schwer zu vektorisierende Bilder

Andere Bedenken:

  • Einige SVG-Editoren speichern möglicherweise Metadaten in Ihren SVGs, wodurch die Dateigröße zunimmt und Daten möglicherweise unbeabsichtigt offengelegt werden
    • zB wenn Sie ein PNG in Inkscape exportieren, hat es den absoluten Pfad zu diesem Verzeichnis in der SVG gespeichert, wenn Sie es speichern
    • SVG-Kompressoren können dies entfernen, aber ich habe es nicht getestet (Sie können es gerne bearbeiten, wenn Sie es haben).

  • Danke, unsere Grafiker erstellen SVGs in Illustrator und bearbeiten sie dann von Hand, also ist es normalerweise mit wenigen Elementen und Attributen, also sind diese Bedenken stumm – meine Sorge war, dass ich etwas Ernstes übersehen habe, da ich fast nur Vorteile sehe über klassische PNGs – aber es läuft wahrscheinlich wirklich auf <= IE8 oder > IE8 hinaus. Beispielsweise ist das Standardsymbol mit Kreis mit Pluszeichen in SVG noch kompakter als in PNG.

    – Robert Goldwein

    26. Juni 2014 um 20:32 Uhr

  • Ja, einige Leute beziehen ihre SVGs von Drittanbietern und öffnen sie nicht in einem Texteditor oder stellen sicher, dass sie komprimiert sind. Wollte das einfach nicht auslassen. Jetzt, wo ich darüber nachdenke, gibt es die gleichen Probleme mit PNGs. In ihnen werden oft nutzlose Daten (im Zusammenhang mit dem Web) gespeichert. Diese Daten werden von Editoren, Dateibrowsern und anderen Programmen verwendet. Dies ist jedoch häufiger bei JPEGs der Fall (Marke des Kamerageschäfts, Modell, Objektiv, Einstellungen usw.).

    – Räuber

    26. Juni 2014 um 22:47 Uhr

  • Danke, also denke ich, dass es wirklich keinen Nachteil gibt, SVGs in unseren Projekten zu verwenden, und wir werden sie noch tiefer integrieren. Vielen Dank für Ihre Einblicke.

    – Robert Goldwein

    27. Juni 2014 um 15:08 Uhr

  • Der richtige Weg für Vektor-Icons sind Icon Fonts. Der größte Nachteil bei SVG-Icons ist für mich, dass das data-Attribut in CSS nicht für IE10/11 funktioniert.

    – ESP32

    20. September 2016 um 12:23 Uhr

  • @Gerfried Icon-Fonts haben jedoch viele Barrierefreiheitsprobleme. Sobald ein Benutzer beschließt, Webfonts zu blockieren oder alle Fonts mit seinen eigenen zu überschreiben (aus welchen Gründen auch immer), gehen all diese hübschen Symbole sofort kaputt. Es gibt Fallbacks, aber ich selbst habe noch keine 100% funktionierende Lösung gesehen. Dies ist bei SVG-Bildern nicht der Fall.

    – tomasz86

    19. September 2017 um 8:47 Uhr

Benutzer-Avatar
Steven García

Sofern Sie nicht sehr einfache Formen/Designs zeigen oder Teile der Grafik mit der App speziell ändern müssen, gibt es keinen großen Anreiz, SVG zu verwenden. Sie können ein PNG in doppelter Originalgröße (für Retina-Displays) erstellen und die Dateigröße ist immer noch um eine Größenordnung kleiner – ganz zu schweigen von der besseren Abdeckung für ältere Browser (keine Notwendigkeit für Javascript oder Polyfills).

Ich sage das als jemand, der Benutzeroberflächen mit Vektorgrafiken erstellt. Es ist ein großartiges Design-Tool, aber in Bezug auf Lieferung/Bandbreite/Reichweite ist es schwer, PNG zu übertreffen. Erst letzte Nacht habe ich ein bekanntes Logo getestet. CocaCola.svg war fast 20.000 groß. Da es sich um eine solide/flache Farbe handelte, habe ich als PNG-8 mit 12-Farben-Palettenkomprimierung exportiert und es auf 1,6 KB reduziert (!!!). Für nur ein paar Logos ist es keine große Sache, aber wenn Sie 40 anzeigen müssen von ihnen.. nun, Sie erhalten das Bild.

Das Beste daran ist, dass Sie ein PNG in eine Base64-Daten-URI umwandeln und direkt in Ihr Stylesheet einbetten können. Dies wird bei SVG nicht empfohlen – einem Format, das bereits für Leistungs- und Kompatibilitätsprobleme bekannt ist, insbesondere bei mobilen Browsern.

Abschließend muss ich sagen, dass es Stärken und Anwendungsfälle für beide gibt, aber PNG hat viel mehr Spuren hinterlassen und Sie stoßen auf weniger Widerstand, wenn Sie mit dem Strom schwimmen. Für die seltsamen Fälle, in denen SVG besser passt, empfehle ich dringend Dieser Artikel und diese Lernressource

Viel Spaß beim Gestalten!

  • IMO, das ist die beste Antwort.

    – Marco Demaio

    25. Dezember 2018 um 15:13 Uhr


  • Sie sollten angeben, mit welchem ​​Coca-Cola-Logo Sie gearbeitet haben. Das aktuelle Logo von 2007 ist sehr einfach und rund 8 KB. Es ist immer noch nichts im Vergleich zu PNG-8, aber viel besser als 20 KB.

    – Kaleb Taylor

    23. August 2020 um 8:48 Uhr


  • Zuerst dachte ich, diese Antwort sei veraltet, aber dann sah ich 2018. Ich habe auch einen Test mit einem „bekannten“ Coca-Cola-Logo durchgeführt und die tatsächlichen Ergebnisse hier veröffentlicht codepen.io/JHeth/pen/XWeWZpO es sei denn, Sie zeigen eine Menge winziger Miniaturansichten auf Ihrer Website oder Sie benötigen Rastergrafiken (Fotos), dann ist es weitaus sinnvoller, SVG zu verwenden, und das war auch 2018 so. Soweit bekannt für Leistungs- und Kompatibilitätsprobleme … vielleicht dieses Diagramm hatte 2018 mehr Rot, aber nicht viel, und ich habe noch nie gehört, dass jemand Leistungsprobleme mit richtig erstellten SVG-Bildern erwähnt hat.

    – JHeth

    30. November 2021 um 6:15 Uhr

Benutzer-Avatar
Unternehmen

SVG ist cool (wie FakeRainBrigand schön beschrieben hat) und schön gerendert, kann aber ziemlich komplex sein. Ein Browser hat mehr zu tun, wenn er mit Vektordaten statt mit pixelbasierten Bildern umgeht. Ein Bild ist ein Element, ein SVG kann viele Kinder haben, die sogar dem DOM hinzugefügt werden können, wenn es inline verwendet wird.

Ich habe keine wertvollen Performance-Tests durchgeführt, aber aus logischer Sicht sollte SVG vorsichtig verwendet werden, wenn es um die Performance geht, insbesondere im Umgang mit mobilen Browsern mittleren Alters (CPU-Belastung). Es wäre sehr nützlich, ein Diagramm zu haben, in dem Sie die CPU-Leistung sehen können, die von 100 SVG-Bildern im Vergleich zu 100 PNG-Bildern auf verschiedenen Android- und IOS-Geräten verbraucht wird …

Eine weitere nervige Sache mit SVG ist, dass das Tag ein Breiten- und Höhenattribut für einige Android/Samsung-Browser und unseren guten alten IE benötigt. Und die meisten modernen SVG-Editoren wie A***e Illustrator fügen einfach das Attribut “viewBox” hinzu.

Das Coolste an SVG ist, dass es in jeder Pixeldichte schön und scharf wiedergegeben wird.

Merken wir uns das leistungsmäßig SVG kann schrecklich werden. Sogar auf modernen Browsern wie Chrome (ich habe dies 2019 geschrieben!) lässt eine CMS-ähnliche Seite mit ein paar 100 (praktisch 3-800) SVG-Symbolen den Browser buchstäblich für mehr als 5 Sekunden hängen, um das Rendern abzuschließen. Währenddessen CPU auslasten.

Wie an anderer Stelle erwähnt, die Anzahl der in die Seite eingebetteten SVGs exponentiell erhöht die Belastung des Browsers, wenn Sie also mit einer solchen Situation konfrontiert werden

Option #1: Konvertieren Sie SVGs in Webfont (Siehe Leistungsdiagramm hier:http://frozeman.de/blog/2013/08/warum-ist-svg-so-langsam/ )

Option 2: Greifen Sie auf einfache alte PNGs zurück

In solchen Situationen, in denen Sie nie etwas Ausgefallenes wie spontane Farbänderungen machen wollen und VIELE Instanzen von SVGs haben, erledigt das alte PNG die Arbeit und rettet den Tag!

Es ist wahr, png wird fast überall verwendet. Ich denke, das liegt daran, dass SVG in den meisten Fällen ziemlich nutzlos ist, das Bild größer sein sollte (glaube ich) und der Computer das Bild jedes Mal neu generieren muss, wenn Sie es zoomen (weil Sie die Bilder immer zoomen, nicht wahr?). ?) Ich denke, das ist der wichtigste Grund.

  • SVGs sind SEHR nützlich für Symbole, die auf modernen (mobilen) Websites allgegenwärtig sind. Sie bieten Skalierung und CSS-Stil ohne Qualitätseinbußen, zwei wichtige Funktionen, die bei pngs nicht vorhanden sind.

    – Benutzer1884155

    14. August 2014 um 13:47 Uhr

  • Aus Benutzersicht ist es sinnlos, aber als Multimedia-Entwickler ist es großartig, nur eine Datei zu verwenden, die in jedem Bildschirm verwendet werden kann und immer die gleiche Qualität beibehält.

    – sebastian romero

    13. September 2017 um 13:31 Uhr

Benutzer-Avatar
Olivia Waliser

SVG-Icons sind deutlich beliebter als PNG-Icons. Warum ist das so? Der Hauptgrund ist, dass sie einfacher zu erstellen sind und von den meisten Webbrowsern verarbeitet werden können. Der Nachteil ist, dass SVG-Symbole nicht die gleiche Qualität wie ihre PNG-Pendants haben. Sie unterstützen auch keine CSS-3D-Transformationen und können in einigen Apps Probleme verursachen, z. B. wenn sie in Verbindung mit einer Schaltfläche verwendet werden. Moderne Browser unterstützen jetzt Kostenlose SVG-Iconsdie einfach auf dem Server gespeichert und in clientseitigen Code geladen werden kann.

  • SVGs sind SEHR nützlich für Symbole, die auf modernen (mobilen) Websites allgegenwärtig sind. Sie bieten Skalierung und CSS-Stil ohne Qualitätseinbußen, zwei wichtige Funktionen, die bei pngs nicht vorhanden sind.

    – Benutzer1884155

    14. August 2014 um 13:47 Uhr

  • Aus Benutzersicht ist es sinnlos, aber als Multimedia-Entwickler ist es großartig, nur eine Datei zu verwenden, die in jedem Bildschirm verwendet werden kann und immer die gleiche Qualität beibehält.

    – sebastian romero

    13. September 2017 um 13:31 Uhr

Nun, da dies eine alte Frage ist, werde ich nur die Tatsache aktualisieren, dass in modernen Browsern; mobil oder Desktop, in modernen Geräten; Telefone oder PCs, SVG ist die beste Option, wenn Sie nicht mit echten Fotos umgehen möchten, dann wähle ich .webp. Ich habe die Größe einer App um viele Megabyte verringert, indem ich nur optimierte SVGs für alle Bilder außer Fotos und für das letzte Webp verwendet habe.

Natürlich ist es 2021 und Geräte und Browser sind viel besser in Leistung und Support. Heutzutage ist es also bequemer, SVGs zu verwenden, und in letzter Zeit ist es sogar eine bessere Lösung, die SVG-Symbole zu verwenden, die von vielen Symbolschriften bereitgestellt werden, als die Schriftart selbst zu verwenden, da Sie möglicherweise eine ganze Schriftart laden und verarbeiten, aus der Sie stammen nur mit 10 bis 20 Symbolen.

1328300cookie-checkSVG-Symbole im Vergleich zu PNG-Symbolen in modernen Websites

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy