CSS Web制作

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

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

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

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

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

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

 

完全無料のプログラミングスクール『ZeroPlus Gate』
30日間でWeb制作を学べる無料のプログラミングスクールがこちら
  • 30日間でWeb制作を学べる
  • 完全無料
  • 現役エンジニアへの質問無制限
  • オンラインの動画学習なので時間場所を問わず勉強可能
  • 最大4回の学習サポート面談
  • 受付は1日25名までの先着制
無料なのに専属のメンターが付き、現役エンジニアへの質問も無制限という破格のサービスです。
いきなり数十万するプログラミングスクールは厳しい・・・という人のお試しに最適。
現在は無料ですがいつ有料になるか分からないので、気になる方はお早めに👇

\ 完全無料 /

ZeroPlus Gate公式サイト

先着1日25名まで!

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)などにシェアすると、いいねされてフォロワーが増えたりすることがあるよ!

 

Web制作おすすめ教材と案件獲得サービス
当ブログではWeb制作学習におすすめの教材を厳選してご紹介しています。
こちらの記事を参考に教材を購入して成果を出している人もたくさんいるので、自分に必要な教材を探してみて下さい。
また、学習面だけでなく営業面である案件獲得サービスもご紹介しています。
スキルが身についても仕事がなければ意味がないので、営業に不安がある人はこちらの記事をぜひ参考にしてみて下さい。
この記事を参考にスキルと営業力を身につけて稼げるようになりましょう!

-CSS, Web制作