LoginSignup
117
108

More than 5 years have passed since last update.

HTML 5.1の新要素picture入門

Last updated at Posted at 2016-07-14

(2016/09/26 追記)
picture要素について、ICS MEDIAにて更に詳しく解説しました。こちらも合わせて参照ください。

レスポンシブイメージで画像の表示を最適化 〜CSSもJSもいらないHTML 5.1の新機能 - ICS MEDIA


HTML 5.1にて実装される新要素picture要素を使うと、CSSメディアクエリを使って画像を出し分けることが可能です。

例えば、ビューポート横幅が700px以下の時、a.pngという画像を表示するコードは下記のとおりです。個別の画像の指定はsource要素で行い、画像パスをsrcset属性、メディアクエリをmedia属性でそれぞれ指定します。また、picture要素に対応していないブラウザの為に、img要素も必ず指定します。

<picture>
  <source media="(max-width: 600px)" srcset="images/a.png">
  <img src="images/c.png" alt="">
</picture>

source要素は複数指定できます。ビューポート横幅が600px以下、600px以上700px以下、それ以外でそれぞれ画像を出し分けるコード例は次です。

<picture>
  <source media="(max-width: 600px)" srcset="images/a.png">
  <source media="(max-width: 700px)" srcset="images/b.png">
  <source srcset="images/c.png">
  <img src="images/c.png" alt="">
</picture>

デモはCodePenにアップしました。picture要素に対応しているブラウザで動作します。

ウインドウサイズに応じて、a.pngb.pngc.pngの画像が切り替わるのがわかります。

主要ブラウザの最新版で使用可能

iOS 9.3、Android Browser 50がpicture要素に対応したことで、デスクトップ・モバイル含む現在の主要ブラウザ全てでpicture要素が使えるようになりました(※)。もしそれ以外のブラウザでも使用したい場合は、「Picturefill」等のポリフィルを使用するとよいでしょう。

次回の記事「コマ撮りアニメをHTML 5.1のpicture要素だけで作る方法(CSS、JavaScript不要)」が応用編となっていますので、是非ご覧ください。

Can I use picture

117
108
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
117
108