親要素の幅やページの幅の比率で幅のサイズを指定する - CSS

CSSで親要素の幅やページの幅の比率で幅のサイズを指定するコードを紹介します。

概要

CSSで親要素の幅の比率で幅を指定する場合は % 単位を利用します。

例 : ページ(bodyタグ)の直下の要素の場合

下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
  <style>
    <!--
    body {
      margin:2em;
      padding:1em;
      border:solid #ff6a00 1px;
    }

    .Frame {
      width:100%;
      background-color:#b9f6ff;
    }
    -->
  </style>
</head>
<body>
  <div class="Frame">テスト</div>
</body>
</html>

解説

bodyタグの子要素のFrameクラスのdivタグの幅を%で指定します。100%の値を設定した場合は、親要素の100%の幅になります。親要素のbodyではマージンが2em、パディングが1em設定されていますので、100%の幅はウィンドウ幅から左右それぞれ3em(6em)引いた幅が100%の幅となります。

表示結果

上記のHTMLをWebブラウザで表示します。左右のマージンとパディングを引いた幅で表示されます。


Frameクラスのwidthプロパティの設定を width:50% にした場合は、下図の表示となります。親要素の領域の幅である左右のマージンとパディングを引いた幅の半分の幅で枠が表示されます。

例 : ネストされている要素の場合

下記のHTMLファイルを作成します。
<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <title></title>
  <style>
    <!--
    body {
      margin:2em;
      padding:1em;
      border:solid #ff6a00 1px;
    }

    .Container {
      width:680px;
      margin:1em;
      padding:1em;
      border:solid #009860 1px;
    }

    .Frame {
      width:100%;
      background-color:#b9f6ff;
    }
    -->
  </style>
</head>
<body>
  <div class="Container">
    <div class="Frame">テスト</div>
  </div>
</body>
</html>

解説

bodyタグの子要素にContainerクラスのdivタグがあり、その子要素にFrameクラスのdivタグがあります。
Containerの幅は680pxで固定された幅の枠です。Frameクラスの幅を%で指定しています。Frameクラスの幅を100%の値で設定した場合は、親要素であるContainerクラスの枠の幅を100%とする幅になります。親要素のContainerクラスではマージンが1em、パディングが1em設定されていますので、100%の幅はContainerクラスの幅である680pxから左右それぞれ2em(4em)引いた幅が100%の幅となります。

表示結果

上記のHTMLをWebブラウザで表示します。親要素であるContainerクラスの幅から、左右のマージンとパディングを引いた幅でFrameクラスの枠が表示されます。


Frameクラスのwidthプロパティの設定を width:50% にした場合は、下図の表示となります。親要素の領域の幅である左右のマージンとパディングを引いた幅の半分の幅で枠が表示されます。


ウィンドウ幅を狭めた状態です。Containerクラスの幅が固定のため、Frameクラスの幅もContainerクラスの幅に合わせられるため、右側に突き抜けて表示されます。100%の幅がWebブラウザの画面やページ全体の幅とは無関係なことがわかります。

著者
iPentecのメインプログラマー
C#, ASP.NET の開発がメイン、少し前まではDelphiを愛用
掲載日: 2020-01-06
iPentec all rights reserverd.