CSSの新しい単位: lvh, svh, dvhとは?
CSSのレイアウトデザインにおいて、ビューポートの高さを指定するための単位としてvh
が長い間使われてきました。しかし、このvh
はブラウザのアドレスバーやツールバーの影響を受けるため、特にモバイル環境では意図しないレイアウト崩れを引き起こすことがあります。これを解決するために新たに導入されたのがlvh
、svh
、dvh
という単位です。
1. 各単位の説明
- lvh (Large Viewport Height): 最も大きなビューポートの高さを基準にした単位です。通常、アドレスバーが非表示の状態など、ブラウザの最大表示領域を指します。
- svh (Small Viewport Height): 最も小さなビューポートの高さを基準にします。アドレスバーが表示されている状態など、ブラウザの最小表示領域を基準にします。
- dvh (Dynamic Viewport Height): ビューポートの高さが動的に変化する場合(アドレスバーの表示・非表示に応じて)の平均的な高さです。モバイル環境での変動にも柔軟に対応するため、デザインに安定性をもたらします。
2. 従来のvhとの違い
従来のvh
は、ビューポート全体の高さを基準にしていますが、モバイル環境ではユーザーのスクロールによりアドレスバーの表示・非表示が変動するため、コンテンツが上下に動く問題が発生します。lvh
、svh
、dvh
はそれぞれ異なるシナリオに応じて正確な高さを指定できるため、デザインの一貫性が保たれます。
3. 使い方の例
以下は、lvh
、svh
、dvh
を使用した具体的なコード例です。
.container {
height: 100lvh; /* 最大のビューポート高さを使用 */
}
.header {
height: 100svh; /* 最小のビューポート高さを使用 */
}
.footer {
height: 100dvh; /* 動的なビューポート高さを使用 */
}
これにより、ユーザーの操作に応じた高さ調整が行われ、レイアウトが崩れることなく安定したデザインを提供できます。
4. 実際の活用シーン
新しい単位の使用は、モバイルファーストのデザインにおいて特に有効です。例えば、全画面表示のセクションや、アドレスバーの表示による高さ変動を考慮する必要がある場合、dvh
を用いることでユーザー体験を損なうことなく適切にレイアウトを維持できます。また、特定のデザインではsvh
を使用して最小の表示領域に基づくレイアウトが可能になります。
5. 注意点
これらの新しい単位は比較的新しく、一部の古いブラウザや環境ではサポートされていない可能性があります。最新のブラウザの互換性を確認しつつ使用するようにしましょう。また、フォールバックのスタイルを用意しておくと良いでしょう。
まとめ
CSSの新しい単位であるlvh
、svh
、dvh
を使用することで、モバイル環境におけるレイアウトの課題を解決し、柔軟で安定したデザインを実現できます。これらの単位を活用して、よりユーザーに優しいインターフェースを提供しましょう。