CSSで要素を画面いっぱいに広げるには?

CSSで要素を画面いっぱいに広げる方法

CSSで要素を画面いっぱいに広げる方法

Webサイト制作において、要素を画面いっぱいに広げたい場面は多くあります。例えば、背景画像を画面いっぱいに表示したり、ヘッダーやフッターを画面幅に合わせて広げたりする場合などです。

このような場合、CSSを使って簡単に実現することができます。この記事では、要素を画面いっぱいに広げるためのさまざまな方法と、それぞれのメリット・デメリットについて解説していきます。

vw, vhを使った方法

vw, vhはそれぞれビューポートの幅と高さを表す単位です。1vwはビューポートの幅の1%、1vhはビューポートの高さの1%を表します。これらの単位を使うことで、要素の幅や高さをビューポートのサイズに合わせて動的に変更することができます。

要素を画面いっぱいに広げる場合は、width: 100vw; height: 100vh; と指定します。


<style>
.full-screen {
  width: 100vw;
  height: 100vh;
}
</style>

<div class="full-screen">
  <p>画面いっぱいに広がります</p>
</div>

メリット

* コードがシンプルでわかりやすい * ビューポートのサイズに合わせて動的にサイズが変更される

デメリット

* スクロールバーが表示される場合がある

親要素からはみ出して表示させる方法

子要素を親要素からはみ出して画面いっぱいに表示させる方法があります。この方法は、固定幅のヘッダーやフッターがある場合などに便利です。


<style>
.parent {
  width: 500px;
  margin: 0 auto;
}

.full-screen {
  width: 100vw;
  margin-left: calc(50% - 50vw); 
}
</style>

<div class="parent">
  <div class="full-screen">
    <p>親要素からはみ出して画面いっぱいに広がります</p>
  </div>
</div>

メリット

* 親要素の幅に関係なく画面いっぱいに表示できる

デメリット

* 親要素の位置によっては表示が崩れる場合がある

それぞれの方法の使い分け

上記で紹介した2つの方法は、それぞれメリット・デメリットがあります。どちらの方法を使うかは、状況に応じて適切な方を選択する必要があります。

方法 メリット デメリット 適した場面
vw, vhを使う方法 コードがシンプル
ビューポートに合わせて動的にサイズ変更
スクロールバーが表示される場合がある シンプルなレイアウトの場合
スクロールバーが表示されても問題ない場合
親要素からはみ出して表示させる方法 親要素の幅に関係なく画面いっぱいに表示できる 親要素の位置によっては表示が崩れる場合がある 固定幅のヘッダーやフッターがある場合
親要素の位置が固定されている場合

参考資料

よくある質問

Q1: 画面いっぱいに広げた要素がスクロールしてしまう

A1: HTMLとbodyに以下のCSSを追加してください。


html, body {
  height: 100%;
  overflow: hidden; 
}

Q2: 親要素からはみ出して表示させた要素が、左側にはみ出してしまい画面いっぱいに広がらない

A2: margin-left だけでなく margin-right にも calc(50% - 50vw) を指定してください。


.full-screen {
  width: 100vw;
  margin-left: calc(50% - 50vw); 
  margin-right: calc(50% - 50vw); 
}

Q3: モバイル環境で表示が崩れてしまう

A3: モバイル環境では、ビューポートのサイズが異なるため、表示が崩れる場合があります。メディアクエリを使って、モバイル環境専用のCSSを記述することで、表示を調整することができます。


@media screen and (max-width: 768px) {
  .full-screen {
    /* モバイル環境用のスタイル */
  }
}

【結論】親要素からはみ出して表示させたい子要素にCSSで、width:100vwと左右どちらかもしくは両方のmarginにcacl(50% - 50vw)指定する。

その他の参考記事:css li 横並び 均等