CSS Web制作

CSSのdvhでスマホの高さ100%にする方法【アドレスバー問題解決】

2023年3月25日

※ 当サイトではアフィリエイト広告を利用しています

高さ100vhにしたのにスマホで見ると画像が真ん中にこないのなんで?

高さいっぱいにするにはCSSでheight: 100vh;にすればいいのですが、パソコンでは高さ100%で真ん中のテキストや画像が上下中央になっても、スマホではちょっと下に表示されてしまいます。

これは画面下にあるアドレスバーが原因で、今まではJavaScriptを書いたりする必要がありましたが現在はCSSを一行書くだけで解決します。

今回は実際にどう表示されるか含め解説していきます。

じゅんぺいブログは、Web制作コーディングWordPress制作)の技術記事を中心に、約500記事公開しています。ぜひ他の記事も参考にしてみてください!
完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適です。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇
(有料になっていたらすいません🙇‍♂️)

\ 完全無料 /

ZeroPlus Gate公式サイト

毎日先着制!

CSSのdvhを使ってスマホの高さ100%にする方法

まずは画面いっぱいにしたい要素を100vhにしてみます。

HTMLとCSSは仮にこんな感じとします。

<div class="sample">
  <div class="sample-img">
    <img src="画像パス" alt="" />
  </div>
</div>
.sample {
  align-items: center;
  background-color: #c1e0ff;
  display: flex;
  height: 100vh;
  justify-content: center;
}
.sample-img {
  height: 200px;
  width: 200px;
}

.sampleを高さいっぱいにして、以下の3行で子要素の画像を上下左右中央にしています。

.sample {
  align-items: center;
  display: flex;
  justify-content: center;
}

この状態でスマホを見るとこのようになります。

100vhの場合

100vhの場合

水色の背景の真ん中にはなっていません。

原因は下の黒い部分であるアドレスバーを含めた高さ100%になっているからです。

100vhはアドレスバーを含めた高さ100%

100vhはアドレスバーを含めた高さ100%

 

アドレスバーを除いた高さ100%にする

アドレスバーを除いた高さ100%にする場合は、このように書きます。

.sample {
  height: 100dvh;
}

height: 100vh;height: 100dvh;に変えるだけです。

するとこのように表示されます。

100dvh

100dvh

今度はアドレスバーを除いた高さ100%になったので、水色の背景の上下中央に画像が表示されました。

ちなみに少しスクロールするとアドレスバーが消えますが、そうすると自動で高さ調整されます。

少しスクロールした状態

少しスクロールした状態

dvhはSafari、Firefoxではサポートされていましたが、Chromeは2022年11月にリリースされた『Google Chrome 108』でようやく使えるようになりました。

 

JavaScriptを使う方法

これは私が以前使っていた方法ですが、このように書いていました。

.sample {
  height: calc( var(--vh) * 100 );
}
const spHeight = window.innerHeight;
document.documentElement.style.setProperty("--vh", spHeight / 100 + "px");

これでも同じように実装できます。

まとめ

今回はdvhでスマホの高さ100%にする方法を解説してきました。

この問題はdvhが使えるようになるまではちょっと面倒な実装でしたが、これで非常に簡単になりました。

このような新しい単位などは全ての主要ブラウザで使えるようになるまでは思い切って使えないので、ちゃんと確認するようにしましょう。

以上になります。

この記事が役に立ったと思ったら、シェアボタンからX(旧Twitter)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!

 

  • この記事を書いた人

じゅんぺい

37歳からWeb制作とブログ開始。Web制作歴5年目でコーディングとWordPressオリジナルテーマ制作が中心。これまで120件以上を納品。当ブログ月間最高15万PVで、370記事以上はWeb制作の技術記事。コンテンツ販売→累計売上1200万円&1500部超え。X(旧Twitter)フォロワー7200人以上。2024年3月からブログの経験を活かしてライターとしても活動を開始。

-CSS, Web制作