通常、SVGがレスポンシブに表示される場合、<svg>
にviewBox
属性を設定するだけで、width
およびheight
属性を完全に省略できます(つまり、<svg viewBox="0 0 20 20">
のようなもので十分です)。ですから、width
属性とheight
属性が省略されたSVG画像は、Googleなどの検索エンジンによってどのようにインデックス付けされるのでしょうか。つまり、画像検索でどのサイズで表示されるのでしょうか。
少し検索したところ、次のように表示されているようです。
800px
で、高さはアスペクト比を保持するように設定されます800px
で、幅はアスペクト比を保持するように設定されます一方、width
およびheight
属性が設定されたSVG画像は、2つの属性に示されるサイズで画像検索に表示されるようです(たとえば、<svg viewBox="0 0 20 20" width="100" height="100">
は100x100
として表示されます)。
また、width
とheight
が100%
に設定されているSVGイメージを見つけました。イメージ検索では2000x2000
として表示されます。
それでは、SVG画像のwidth
属性とheight
属性のベストプラクティスは何ですか?省略するか、100%
に設定するか、他の値に設定する必要がありますか?
SVGは独自の目的になり得ますが、Webサイト、アクセシビリティリーダー、およびSEOで考慮する必要があるものの多くは、標準のIMGスキーマに基づいています。
このため、検索エンジンが期待すること、つまり確立された古き良きIMGスキーマとそのすべての属性を使用することがベストプラクティスです。
SVGが成熟するにつれて、より堅牢なイメージスキーマが開発されることは間違いありませんが、現時点では、アクセシビリティデバイスとすべてのブラウザーが理解する通常のIMGスキーマを維持してください。
常に画像の幅と高さの属性を定義します。これにより、レンダリング中の不必要な再描画とリフローを回避できます。
HTMLの高さと幅のプロパティを使用してコードを正しくマークアップせず、サイトに影響を与える場合、 Google および他の検索エンジンが検索結果でペナルティを科します。
さらに、アプリケーションまたはソーシャルメディアで embedding の場合、画像が正しく表示されない場合があります。
画像の高さと幅の両方の属性を常に指定します。高さと幅が設定されている場合、画像に必要なスペースはページがロードされるときに予約されます。ただし、これらの属性がないと、ブラウザは画像のサイズを認識せず、適切なスペースを確保できません。効果は、ページレイアウトがロード中に(イメージのロード中に)変更されることです。
画像の寸法を含めると、ブラウザは画像を保持する「コンテナ」を引き出して、ダウンロード中に画像用のスペースを確保できます。ブラウザは、画像がダウンロードされてサイズが判明したら、ページ全体に戻って再描画することなく、「コンテナ」の周りのCSSおよびオブジェクトの残りのページをペイントできます。
W3Cの 技術仕様 を参照してください。
width/height
要素(<svg>
ファイル内にあり、src
がその.svg
ファイルに設定されているwidth/height
要素の<img>
属性とは何の関係もない)に.svg
属性を設定するかしないかについて、私が思いついたのは明確にしてください)。
1)ユーザーがそのSVGを別のタブで開くと、SVGは固定サイズではなく画面全体に表示されるため、SVGが応答する場合、width/height
要素に<svg>
属性を設定しないことが最良の選択のようです。多くの場合、小さすぎる、または大きすぎる(したがって、スクロールバーが表示される)。 2)検索エンジンがSVGファイルにアクセスすると、<svg>
要素で指定されたwidth
およびheight
が表示されないため、SVGはおそらく応答SVGとして解釈されるため、検索エンジンは表示に最適なサイズを選択します画像検索(現在、少なくともGoogleでは800px
のようですが、これは将来変更される可能性があります)。 3)そのようなSVGが<img>
に含まれており、<img>
がwidth/height
属性を指定していない場合、<img>
は利用可能な幅全体を埋めます。ただし、width/height
の<img>
を任意の値に自由に指定でき、適切なサイズになります。
width/height
に<svg>
を設定すると便利な唯一のケースは、画面サイズに関係なく、SVGが常にその特定のサイズで表示されることになっている場合です(つまり、SVGはレスポンシブ)。 width/height
を設定すると、ユーザーが別のタブでSVGを開いたときに指定したサイズになり、検索エンジンは指定したサイズでインデックスを作成します。SVGが<img>
に含まれ、<img>
には含まれませんwidth/height
属性を指定すると、<img>
のサイズはwidth/height
で指定された<svg>
と一致します。ただし、width/height
で<img>
属性を指定し、<svg>
で指定された属性と一致しない場合、SVGは<img>
で指定されたサイズに適切にサイズ変更されますが、SVGのサイズは固定されているため、 width/height
に<img>
属性を設定するには、おそらくwidth/height
の<svg>
属性に一致するように設定する必要があります。