アートディレクションのためのpicture要素
ビューポートの条件に応じて画像全体を切り替えます。
「アートディレクションのためのpicture要素」はCoddyKit上の無料HTML Academyレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはHTML Academy学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 HTML Academyコースには全4レッスンが含まれています。
アートディレクションの問題
アートディレクションとは、画面サイズに応じて、基本的に異なる画像の切り抜きや構図を提供することです:
- デスクトップでは横長の写真全体
- モバイルでは拡大した縦長の切り抜き
- これは
srcsetとsizesだけでは解決できません
picture要素
<picture>要素は、複数の<source>要素とフォールバック用の<img>要素を内包します:
<picture>
<source media="(min-width: 800px)" srcset="wide-crop.jpg">
<source media="(min-width: 500px)" srcset="medium-crop.jpg">
<img src="narrow-crop.jpg" alt="Team photo">
</picture>
<!-- Browser picks the first matching source -->
<!-- img is required as fallback and carries the alt attribute -->pictureの仕組み
ブラウザーは<source>要素を上から順番に評価します:
- 最初のsourceの
media条件を確認し、一致すればその画像を使用します - 2番目のsourceを確認し、一致すればその画像を使用します
- どれも一致しなければ、デフォルトとして
<img>にフォールスルーします
<img>要素が選択された画像を表示し、altテキストを保持します。
pictureによるフォーマットの切り替え
<picture>では、ブラウザーの対応状況に基づいて画像フォーマットを選択することもできます:
<picture>
<!-- AVIF: best compression, newest support -->
<source type="image/avif" srcset="photo.avif">
<!-- WebP: great compression, wide support -->
<source type="image/webp" srcset="photo.webp">
<!-- JPEG: universal fallback -->
<img src="photo.jpg" alt="Mountain photo">
</picture>
<!-- Browser picks the first format it supports -->アートディレクションとフォーマットの組み合わせ
メディア条件とフォーマット選択を組み合わせることができます:
<picture>
<source
media="(min-width: 800px)"
type="image/webp"
srcset="hero-wide.webp"
>
<source
media="(min-width: 800px)"
srcset="hero-wide.jpg"
>
<source type="image/webp" srcset="hero-mobile.webp">
<img src="hero-mobile.jpg" alt="Hero image" width="1200" height="600">
</picture>img要素は必須
<picture>内の<img>要素は省略できません:
- 選択された画像を表示します
- アクセシビリティのための
altテキストを保持します width、height、loadingなどの属性を保持します- これがないと何も表示されません
sourceのmedia属性
media属性には、標準のCSSメディアクエリを指定できます:
<picture>
<source media="(orientation: landscape)" srcset="landscape.jpg">
<source media="(orientation: portrait)" srcset="portrait.jpg">
<img src="portrait.jpg" alt="Scene">
</picture>
<!-- Other media features work too: -->
<!-- (prefers-color-scheme: dark) -->
<!-- (min-resolution: 2dppx) -->
<!-- (max-width: 600px) -->sourceのsrcsetによるレスポンシブな選択
アートディレクションとsrcsetを組み合わせることで、完全に制御できます:
<picture>
<!-- Desktop: wide hero, multiple resolutions -->
<source
media="(min-width: 1024px)"
srcset="hero-1024.jpg 1024w, hero-2048.jpg 2048w"
sizes="100vw"
>
<!-- Mobile: portrait crop -->
<img
srcset="hero-mobile-400.jpg 400w, hero-mobile-800.jpg 800w"
sizes="100vw"
src="hero-mobile-400.jpg"
alt="Conference keynote speaker on stage"
>
</picture>ダークモード用の画像
ダークモードを利用するユーザーには、別の画像を提供できます:
<picture>
<source
media="(prefers-color-scheme: dark)"
srcset="logo-dark.svg"
>
<img src="logo-light.svg" alt="Company logo" width="120" height="40">
</picture>
<!-- Users with dark mode OS setting see logo-dark.svg -->
<!-- Everyone else sees logo-light.svg -->pictureとCSS background-imageの比較
<picture>とCSSの背景を使い分ける場面:
- コンテンツ画像 —
<picture>を使用します:altテキストが必要で、文書のコンテンツの一部になる画像 - 装飾画像 — メディアクエリとCSSの
background-imageを使用します - SEOで重要な画像 — 常に
<picture>を使用します:クローラーはimg要素をインデックスに登録します
アクセシビリティに関する注意
alt属性は必ず<source>ではなく<img>に指定します:
<picture>
<source srcset="photo.webp" type="image/webp">
<!-- alt goes on img, not source: -->
<img src="photo.jpg" alt="Sunset over the Pacific Ocean">
</picture>
<!-- screen readers read img's alt, whichever source was selected -->pictureでの遅延読み込み
<picture>内の<img>に遅延読み込みを追加します:
<picture>
<source srcset="photo.webp" type="image/webp">
<img
src="photo.jpg"
alt="Gallery photo"
loading="lazy"
width="800"
height="600"
>
</picture>クイックチェック
pictureブロック内で必ず存在し、alt属性を持つ必要がある要素はどれですか?
まとめ:picture要素
pictureによるアートディレクション:
<picture>は<source>要素と<img>要素を内包します- ブラウザーは最初に一致した
<source>を選択します - ビューポートの条件には
mediaを、フォーマットの選択にはtypeを使用します <img>は必須です — 画像を表示し、altテキストを保持しますsrcsetとsizesを組み合わせることで、レスポンシブ表示を完全に制御できます
よくある質問
「アートディレクションのためのpicture要素」レッスンは無料ですか?
はい。「アートディレクションのためのpicture要素」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、HTML Academyコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 HTML Academyコースには全4レッスンが含まれています。
「アートディレクションのためのpicture要素」で何を学びますか?
ビューポートの条件に応じて画像全体を切り替えます。 ブラウザで直接実行するハンズオンコードでHTML Academyを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
HTML Academyを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのHTML Academyは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「アートディレクションのためのpicture要素」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このHTML Academyレッスンでコードを書いて実行できますか?
はい。すべてのHTML Academyレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- img要素:src、alt、width、height
- srcsetとsizesによるレスポンシブ画像
- アートディレクションのためのpicture要素
- figureとfigcaption