SafariのURLメニュー部分も考慮できるCSSの単位「dvh」

iOS 15.4のSafariからは新しい単位が追加されました。
その中でも「dvh」という単位が非常に便利で、いままでiOS Safariで高さ100%の状態を指定するのはかなり面倒でしたが、それが解消されます。
iOS SafariのURLメニュー問題
iOS Safariでは、下にスクロールするとメニューバーが小さくなって隠れ、上にスクロールするとメニューバーが大きくなります。

100vhという指定の仕方もありますが、これだとメニューバーが隠れた状態の高さ100%になるので、メニューバーが表示された状態での高さ100%を指定するのは面倒でした。
「dvh」単位の使い方
高さの指定時に単位として「dvh」を指定するだけで、メニューなどのUI状態も考慮した高さ100%を実現できます。
height: 100dvh;ただし、この単位はiOS 15.4以降のSafariでしか対応していないので、その前に従来の単位で高さ指定をしておきます。
height: 100vh;
height: 100dvh;これならiOS Safariでは「100dvh」が適用されて、それ以外のブラウザでは「100dvh」の指定が読み込まれず、その前に指定されてある「100vh」が適用されます。
dvh以外の単位
dvh以外にもいくつかの単位が追加されています。
追加された単位には先頭に「sv○」「lv○」「dv○」が付いていて、それぞれ下記の意味があります。
- sv○:メニューなどのUI表示時の○○
- lv○:メニューなどのUI非表示時の○○
- dv○:メニューなどのUI現在状態の○○
| 単位 | 意味 | 備考 |
|---|---|---|
| svw | メニューなどのUI表示時の「横幅」 | |
| lvw | メニューなどのUI非表示時の「横幅」 | |
| dvw | メニューなどのUI現在状態の「横幅」 | |
| svh | メニューなどのUI表示時の「高さ」 | |
| lvh | メニューなどのUI非表示時の「高さ」 | |
| dvh | メニューなどのUI現在状態の「高さ」 | |
| svmin | svwとsvhの小さい方 | |
| lvmin | lvwとlvhの小さい方 | |
| dvmin | dvwとdvhの小さい方 | |
| svmax | svwとsvhの大きい方 | |
| lvmax | lvwとlvhの大きい方 | |
| dvmax | dvwとdvhの大きい方 | |
| svi | メニューなどのUI表示時の「インライン方向のサイズ」 | viewport inlineの「vi」? |
| lvi | メニューなどのUI非表示時の「インライン方向のサイズ」 | |
| dvi | メニューなどのUI現在状態の「インライン方向のサイズ」 | |
| svb | メニューなどのUI表示時の「ブロック方向のサイズ」 | viewport blockの「vb」? |
| lvb | メニューなどのUI非表示時の「ブロック方向のサイズ」 | |
| dvb | メニューなどのUI表示時の「ブロック方向のサイズ」 |
現状はSafariのみですが、今後他のブラウザでも対応されていきそうです。




iOS Safariでinputタグにフォーカスを合わせると、自動で画面が拡大してしまう原因と解決方法
npm install時に「cb() never called!」とエラーが表示されたときの解決法
Gitで1行しか変更していないはずのに全行変更した判定になってしまう
Nuxt.jsで「Classic mode for store/ is deprecated and will be removed in Nuxt 3.」のエラーメッセージが表示される場合の対処法
Visual Studio Codeでコメントを色分けして管理する「Better Comments」
gulpでPostCSSを使う方法
WordPressでbloginfo()の一部パラメーターの廃止・非推奨に注意!
WordPressのカスタムメニューでは、内部リンクに対してカスタムリンクは使わない!
EJSのincludeで別ファイルを読み込むときの画像パスを指定する方法
Dart Sassを使う上で1番基本的なネストやアンパサンドの書き方|Dart Sass入門
MacのKeynoteにハイライトされた状態でコードを貼り付ける方法
AirPodsで片耳を外しても再生が止まらないようにする方法
iTerm2でマウスやトラックパッドの操作を設定できる環境設定の「Pointer」タブ
DeepLで「インターネット接続に問題があります」と表示されて翻訳できないときに確認すること
Ulyssesの「第2のエディタ」表示を使って2つのシートを横並びに表示する
macOSの効率化に関するDiscordコミュニティ「CMD-F」を立ち上げました
1Passwordの開発者向け機能(SSH Agent / Environments / 1Password CLI / Developer Watchtower)
Default Folder Xで保存ダイアログ内のファイルリストにフォーカスする方法
Obsidianで整理した知識をAnkiで定着させる方法
Figma × Keyboard Maestroでどこまで効率化できる?
マウス操作の完成度が高いウインドウリサイズアプリ「Magnet」
Macで複数ディスプレイを使っている場合に便利な設定集
AppCleanerでMacアプリを関連ファイルごと完全に削除する
操作に没頭できる!Firefox版 Arcのようなブラウザ「Zen Browser」
chezmoi(シェモア)で始めるdotfiles管理