🙆

【HTML】viewport への理解を深める

2024/03/16に公開

本記事の目的

この記事は、viewport への理解を深めることを目的に、

  • なぜ viewport を設定するの?
  • viewport の設定はどうすればいい?

といった疑問を解消します。

結論

  • なぜ viewport を設定するのか:デバイスの大きさに合わせたレイアウトを行うため
  • viewport の設定はどうすればいいのか:<meta name="viewport" content="width=device-width,initial-scale=1">

なぜ viewport を設定するのか?

そもそも viewport とは、現在表示しているコンテンツの部分のことを指します。

viewport.png

上記の画像のように、タブやメニューバーなどのブラウザのUIを除いた部分が、viewportです。

viewport の役割は、HTMLから画面を作るときに必要となる「画面のサイズ」として使われます。

<meta name="viewport" content="width=580">

この場合だと、580px の画面でHTMLを作成します。

その後、デバイスの大きさで表示されるように拡大・縮小されます。

このとき、設定された viewport の大きさとデバイスの大きさが、かけ離れていると、見にくくなってしまいます。例えば、PCの画面をスマホで見た場合です。

viewport-comparison.png

viewportの設定が適切でないと、上記の左側のように小さく表示されてしまいます。

しかし、viewport をデバイスの大きさに合わせることで、右側のように十分な大きさで表示されます。

そのため、viewport をデバイスの大きさに自動で合わせる

<meta name="viewport" content="width=device-width,initial-scale=1">

という設定がよく使われます。

このように、viewport を設定することで、デバイスの大きさに合わせたレイアウトを行うための下準備が出来ます。

補足:「viewport と デバイスの解像度の関係」について。

結論として、デバイスの解像度とviewport は関係ありません。

viewport のサイズは、CSSピクセルという単位で決められいます。

CSSピクセルは、どの解像度のデバイスでも同じ大きさで表示します。

そのため、viewport のサイズは、デバイスの解像度に依存しません。

詳しく知りたい方は、以下のサイトをご覧ください。

https://note.com/nviveto/n/n3ece1fc5ee7d

viewport の使い方は?

結論:

<meta name="viewport" content="width=device-width,initial-scale=1">

プロパティの説明

  • width:width=600 にすると、px値。device-widthにすると、100vwになるように設定される
  • initial-scale:ページを最初に読み込んだときの拡大・縮小倍率を設定。1が基準値

他のプロパティ

  • height:height=600 にすると、px値。device-heightにすると、100vhになるように設定される
  • minimum-scale :ページの縮小倍率の最大値を設定
  • maximum-scale :ページの拡大倍率の最大値を設定
  • user-scalable :ページの拡大・縮小の無効化・有効化を設定

参考資料

https://developer.mozilla.org/en-US/docs/Web/CSS/Viewport_concepts#what_is_a_viewport

https://developer.mozilla.org/ja/docs/Web/HTML/Viewport_meta_tag

https://drafts.csswg.org/css-viewport/#viewport-meta

https://www.w3schools.com/css/css_rwd_viewport.asp

https://www.semrush.com/blog/viewport-meta-tag/

https://qiita.com/ryounagaoka/items/045b2808a5ed43f96607

https://qiita.com/culage/items/83d28ef47a76a6e31f74

https://web.havincoffee.com/design/2019/01/1901271.html

https://web.dev/blog/viewport-units?hl=ja

https://note.com/nviveto/n/n3ece1fc5ee7d

Discussion