Small/large/dynamic viewport units (svh, lvh, dvh)
svh/svw はUIバーが表示された状態の最小ビューポート、lvh/lvw はUIバーが隠れた状態の最大ビューポート、dvh/dvw はUIバーの表示状態に応じて動的に変化するビューポートサイズ。従来の vh ではモバイルブラウザのアドレスバーによるサイズ変動の問題があったが、これらの単位で意図通りの表示が可能になる。
概要
svh/svw はUIバーが表示された状態の最小ビューポート、lvh/lvw はUIバーが隠れた状態の最大ビューポート、dvh/dvw はUIバーの表示状態に応じて動的に変化するビューポートサイズ。従来の vh ではモバイルブラウザのアドレスバーによるサイズ変動の問題があったが、これらの単位で意図通りの表示が可能になる。
対応ブラウザ
デスクトップ
Chrome 108+
Edge 108+
Safari 15.4+
Firefox 101+
モバイル
Chrome Android 108+
Safari iOS 15.4+
Firefox Android 101+
基本構文
CSS
.hero {
/* UIバー表示時でもビューポート全体を覆う */
min-height: 100svh;
}
.full-screen {
/* 動的にビューポートサイズに追従 */
height: 100dvh;
}
.sticky-footer {
/* UIバーが隠れた状態の最大値を基準 */
min-height: 100lvh;
} 実務での使いどころ
-
モバイルのフルスクリーンUI
100svh でアドレスバーが表示されていても確実にビューポート全体を覆うレイアウト。
-
動的なビューポート追従
100dvh でスクロールに応じてUIバーが出入りしても、高さが自動調整される。
注意点
- dvh はUIバーの出入りに伴いリアルタイムで値が変化するため、レイアウトシフトの原因になる場合がある。
アクセシビリティ
- ビューポート単位でコンテンツの表示範囲が制限される場合、スクロールでアクセスできるよう配慮する。