概要
W3CのCSS Values and Units Module Level 4で、ビューポート単位についていくつか仕様が変更されました。
この変更では、ビューポート単位にLarge viewport
、Small viewport
、Dynamic viewport
といったビューポートサイズの単位が追加されました。
今までは、vh
やvw
などで画面サイズに合わせての高さ、幅の指定していましたが、
これからは、lvh
やsvw
といった単位で画面サイズに合わせての高さ、幅の指定できるようになります。
そのため、この記事では、追加された、ビューポート単位について解説していきます。
追加された背景
以前のiOS(Safari)では、
画面の高さいっぱいにようを表示したいという時に100vh
で指定すると、
アドレスバーが表示された時、下がその分隠れて表示されてしまい、高さいっぱいにならない
という現象が起きていました。
その現象を解決してくれるのが、今回新しく追加されたビューポート単位、
Large viewport
・Small viewport
・Dynamic viewport
です。
これらを使いこなすことができれば、100vh
で高さいっぱいにならない現象を解決することができます。
追加されたビューポート単位
Large viewport
Large Viewportは、動的に変化するコンテンツ(アドレスバーなど)が格納された時のビューポートサイズが基準になります。
そのため、アドレスバーなどのコンテンツが展開された時には、
そのコンテンツの背後にUIが隠れます。
Large viewportでは、lvw
・lvh
・lvmin
・lvmax
が使えます。
それぞれ、
lvw:Large viewportのwidthが基準
lvh:Large viewportのheightが基準
lmin:Large viewportのwidthとheightの小さい方が基準
lmax:Large viewportのwidthとheightの大きい方が基準
になります。
Small viewport
Small Viewportは、動的に変化するコンテンツが展開された時のビューポートサイズが基準になります。
そのため、アドレスバーなどのコンテンツでUI見えなくなることはありません。
Small viewportでは、svw
・svh
・svmin
・svmax
が使えます。
それぞれ、
svw:Small viewportのwidthが基準
svh:Small viewportのheightが基準
smin:Small viewportのwidthとheightの小さい方が基準
smax:Small viewportのwidthとheightの大きい方が基準
になります。
Dynamic viewport
Dynamic Viewportは、動的に変化するコンテンツ(アドレスバーなど)が、
格納された時、展開された時を考慮して、ビューポートサイズが変化します
そのため、格納された時、展開された時を顧慮せずにUIが、ビューポートサイズ内に収まるように
自動で調整してくれます。
Dynamic viewportでは、dvw
・dvh
・dvmin
・dvmax
が使えます。
それぞれ、
dvw:Dynamic viewportのwidthが基準
dvh:Dynamic viewportのheightが基準
dmin:Dynamic viewportのwidthとheightの小さい方が基準
dmax:Dynamic viewportのwidthとheightの大きい方が基準
になります。
ブラウザの互換性
2022/07/22時点
iOS(Safari)とFirefoxには対応しています。
まとめ
この記事では、W3CのCSS Values and Units Module Level 4で、追加されたビューポート単位について解説しました。
新しく追加されたビューポート単位では、特に、Dynamic viewport
がよく使いそうです。
Small
の時だけ、Large
の時だけみたいなことがあれば、
意図的に、Small viewport
やLarge viewport
を使いタイミングが出てきそうですね!
最後まで読んでくださってありがとうございます!
普段はデザインやフロントエンドを中心にQiitaに記事を投稿しているので、ぜひQiitaのフォローとX(Twitter)のフォローをお願いします。