これが完全版!レスポンシブ対応のwebp画像を実装するHTMLのコード

画像を実装するには、以前はimg要素にsrcで画像を指定するだけで簡単でしたが、レスポンシブ対応、Retina対応、遅延読み込み、そしてさまざまな画像フォーマットの登場により、HTMLのコードが複雑になっています。

レスポンシブ対応のwebp画像を実装するHTMLのコードの完全版を紹介します。非サポート用のフォールバックにも対応しており、コピペで簡単に使用できます。

webp画像を実装する時のHTMLのコード

A picture element to load correctly resized webp images in HTML
by Stefan Judis

下記は各ポイントを意訳したものです。
※当ブログでの翻訳記事は、元サイト様にライセンスを得て翻訳しています。

2021年現在、画像の主要フォーマット

画像を最適なサイズとフォーマットで読み込ませることは、常に複雑でした。avif画像が間近に迫っているため、検討すべきフォーマットがさらに増え、画像のロードは簡単ではなくなっています。

デベロッパーは、pngjpgなどの従来の画像、最近主流のwebp画像、新しく加わるavif画像など、さまざまな画像フォーマットを選択する必要があります。

各画像のブラウザサポートには大きな違いがあります。

  • 従来の画像フォーマット(pngjpgなど)は、完全にサポートされています。
  • webpは、IEを除くすべてのブラウザにサポートされています。
    webpのサポートブラウザ
  • avifは、Chromeでのみサポートされています。
    avifのサポートブラウザ

画像にwebpavifを採用する場合は、ユーザーに有効な読み込み方法を提供し、新しい画像をサポートしていないブラウザ用にフォールバックで代替画像を提供する必要があります。

新しい画像フォーマットを読み込むための取り組み

サポートされている最適な画像フォーマットを読み込むには、いくつかの方法があります。

クライアントサイドのJavaScriptアプリケーションを構築している場合は、画像フォーマットのサポートを検出して、正しい画像を動的にロードさせることができます。また、サーバーレスのエッジ機能やサービスワーカーを使用して、画像リクエストのAcceptヘッダを読み取り、最適な画像フォーマットで提供することもできます。webpをサポートするブラウザには、Accept: image/webp,*/*がHTTPヘッダに含まれます。

HTMLだけで解決したい場合は、レスポンシブ画像とpicture要素を使用して、最適な画像フォーマットを読み込むことができます。

picture要素を使用してwebp画像を読み込む方法を取りあげたスニペットを検索した結果、私は世の中にたくさんの資料があることが分かりました。しかし、残念なことに、それらは表面的なことを説明しているだけでした。ほとんどのチュートリアルでは、webpフォーマットを読み込むだけの方法が紹介されており、レスポンシブやフォールバックには触れられていません。

最初のステップ: picture要素でwebp画像を読み込むには

下記のスニペットをご覧ください。
このHTMLは、webpavifの画像を読み込むための最初のステップです。

このスニペットはブラウザがサポートしている場合、webpまたはavif画像を読み込みます。サポートされていない場合はjpgを読み込みます。素晴らしいですね。

しかし、これだけではダメです。
このpicture要素では、ピクセル密度、デバイスサイズ、CSSレイアウトを考慮していません。レイアウトや画像のサイズを無視して、3500pxの幅の画像を低速回線のスマホで読み込んだ場合、無駄なデータと計算をすべて保存できる画像形式は世界中に存在しません。

完全版: レスポンシブ対応のwebp画像を読み込む方法

Contentful Images APIからレスポンシブ対応のwebp画像を読み込むためのHTML、より完成度の高いスニペットは下記の通りです。

Images APIを使用する利点は、クエリパラメータを使用して画像をアップロードし、さまざまなフォーマットをリクエストできることです(L.5,6のfm=webpは画像を自動的にwebpに変換します🎉)

source要素には、type属性だけでなく、srcsetsizesが含まれています。この2つの属性は、レスポンシブ画像のコア部分で、source要素にも適用できます。srcsetsizesは、レイアウトとソースURL情報を提供するための属性で、ブラウザはスクリーンサイズに応じて適切なサイズの画像を読み込むことができます。このsource要素は最適なフォーマットだけでなく、最適なサイズも読み込みます。

さらに、img要素にはより多くの属性が含まれています。インクルードされたimgは、pictureのフォールバックだけではないことに注目してください。source要素の役割は、このインクルードされた1つの画像に追加のソース情報を提供します。

画像の周りにpicture要素があっても、最高のユーザーエクスペリエンスを提供するためには、画像のベストプラクティスを考慮する必要があります。

上記のようなコードを書くたびに「こんな大変なことをしなければならないのか」と思ってしまいます。Webプラットフォーム自体で解決できる問題なのに、こんなにたくさんのキー入力が必要なのかと。

もっとシンプルなHTMLで書けるようになることを願っています。私はいつか提案するかもしれませんが、きっと誰かがすでに動いているでしょう🙈

追加のリソース

レスポンシブ画像を読み込む最良の方法について詳しくは、下記のリソースをご覧ください。

sponsors

top of page

©2025 coliss
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy