アイコンにPNGのみを使用している最新のWebサイトがこれほど少ないのはなぜかと思っています(ただし、この仮定は私の観察に基づいています)。これまでのところ、SVGでPNGを使用する主な理由はIE8であり、SVGはより多くのCPUパワーを使用することです(ただし、これは単純な1Kアイコンの問題ではないと思います)。 SVGをスプライト、イメージ、またはインラインSVGとして使用する場合、SVGを使用することで多くの利点があります(そして現在使用しています)。
(質問 研究を探しています:PNGスプライトvs SVGスプライトvsアイコンフォント パフォーマンスに焦点を当てており、関連する回答がありません、 アイコンフォントvs. SVGキャッシングとネットワークの懸念 焦点ネットワークトラフィック上で、しかしそれは例えばテンプレートによって簡単に解決できます。)
新しいWebサイトが最新のブラウザのみをサポートしている場合、SVGを使用しない理由はありますか(または-アイコンにPNGを使用する理由はありますか)? IE8を気にせず、SVGの使用がテンプレートやキャッシュによってバックアップされている場合、SVGのみに依存するキャッチはありますか?
SVGが適している理由:
background-size
を使用して、あらゆるサイズのブラウザをシームレスにサポートしますPNGが適している理由:
その他の懸念:
SVGはクールで(FakeRainBrigandの見事な表現)、美しくレンダリングされますが、かなり複雑になる可能性があります。ブラウザは、ピクセルベースの画像の代わりにベクターデータを処理するとき、より多くの作業が必要です。画像は1つの要素であり、SVGには多くの子があり、インラインで使用するとDOMに追加することさえできます。
価値のあるパフォーマンステストは行いませんでしたが、特に中年のモバイルブラウザー(CPUストレス)を扱う場合、パフォーマンスに関しては論理的な観点からSVGを慎重に使用する必要があります。異なるAndroidおよびIOSデバイス上の100個のSVG画像と100個のPNG画像によって消費されるCPU電力を確認できるチャートがあると非常に便利です...
SVGのもう1つのバグは、タグがAndroid/Samsungのブラウザと古き良きIEの幅と高さの属性を必要とすることです。そして、A *** e Illustratorのような最新のSVGエディターは、「viewBox」属性を追加するだけです。
SVGの最もクールな点は、あらゆるピクセル密度でニースと鮮明なレンダリングを行うことです。
非常に単純な形状/デザインを表示している場合、またはアプリでグラフィックの一部を変更する必要がある場合を除き、SVGを使用するインセンティブはあまりありません。元のサイズの2倍のPNG(Retinaディスプレイ用)を作成し、ファイルサイズを1桁小さくすることができます-レガシーブラウザー(Javascriptやポリフィルは不要)のカバレッジが向上することは言うまでもありません。
これは、ベクターグラフィックスを使用してUIを構築する人と言います。それは素晴らしいデザインツールですが、配信/帯域幅/リーチのためにPNGをトップにするのは難しいです。昨夜、有名なロゴを試しました。 CocaCola.svgはほぼ20Kでした。ソリッド/フラットカラーだったので、12色パレット圧縮を使用してPNG-8としてエクスポートし、1.6Kに下げました(!!!)いくつかのロゴについては大したことではありませんが、40を表示する必要がある場合それらの..まあ、あなたは写真を取得します。
最良の部分は、PNGをbase64データURIに変換し、スタイルシートに直接埋め込むことができることです。これは、特にモバイルブラウザでのパフォーマンスと互換性の問題ですでに有名な形式であるSVGでは推奨されません。
最後に、両方に長所とユースケースがあると言わざるを得ませんが、PNGはより多くのトレイルを燃え上がらせており、現在のものを使用するときの抵抗は少なくなっています。 SVGがより適している奇妙なケースについては、この記事およびこの学習リソース
ハッピーデザイン!
事実、pngはほぼすべての場所で使用されています。ほとんどの場合、SVGはほとんど役に立たず、画像は大きくなるはずだと思うので、それをズームするたびにコンピュータが画像を再生成する必要があると思います(常に画像をズームするので、 ?)これが最も重要な理由だと思います。
performancewiseSVGは恐ろしいものになる可能性があることに注意しましょう。 Chrome(2019年にこれを書いている!)のような最新のブラウザでさえ、数百(実際には3〜800)のsvgアイコンを持つCMSのようなページは、レンダリングを完了するために5秒以上ブラウザをハングアップさせます。その間、CPUを最大化します。
別の場所で述べたように、ページに埋め込まれたSVGの数は指数関数的にブラウザーの負荷を増加させるため、そのような状況に直面した場合
オプション#1:svgをwebfontに変換します(ここのパフォーマンスチャートを参照してください: http://frozeman.de/blog/2013/08/why-is-svg-so-slow/ )
オプション#2:単純な古いPNGにフォールバックする
オンザフライの色修正のような派手なことをしたくないような状況で、SVGのインスタンスがたくさんある場合、古いPNGが仕事をして時間を節約します!