8 CSSでレイアウトを組む

レイアウトでよくあるケースについて、説明します。

目次

要素の横幅、高さの設定について width, height

要素の高さは、ほとんどのケースで設定しません
横幅はほとんどの場合、%指定を行います。(ごく小さい要素の場合は、px指定する場合があります)

レスポンシブデザインの場合、デバイスの幅が狭くなると、要素の高さは高くなります。
また、幅もデバイスのサイズによって、使える領域が異なってきます。

高さを設定してしまうと、レイアウト崩れの原因になる場合が多いので、注意しましょう。
幅を固定値にした場合に、画面に入りきらないサイズのpxを設定してしまうと、レイアウト崩れが発生します。

コンテンツの内容に対して、padding(ボックスの内側の余白)を設定することで、美しくレイアウトしましょう。

高さ設定を行うケースは、例えば、高さを固定して縦のスクロールバーを出したい場合などです。
その場合は、以下のように設定しましょう。

height: 300px; /*要素の高さ*/
overflow-y: auto; /*オーバーフローした子要素があれば、自動でスクロールバーを表示*/

要素の左右に余白が入る=ボックスタイプの要素が中央配置 margin: 0 auto

要素の左右に余白が入り、要素セットが中央に配置されるパターンの場合は、全体をdivで括り、クラス名をつけ、中央配置に(marginの左右をautoに設定)します。

中央に配置されるには、幅設定が必要です。
最大値1200pxを設定(max-width)することで、1200px以上の画面の場合に中央配置されます。

1200pxより小さい画面幅では、最低限の余白設定が必要なので、左右のpaddingを設定しています。

base.cssを使う場合は、divタグのcontainerクラスで括りましょう

背景が画面の端まである

背景が画面左右まである場合は、セクションに新しいクラス名(例: bg-full)をつけて、背景色を設定します。
要素への2個目のクラス名の設定は、半角スペースで区切って書きます。

セクション内の子要素全体は、divタグのcontainerクラスで括っておきましょう。

要素の中で縦に子要素が積まれる display: block ブロックタイプの要素

図の例の場合、クラス名col-right要素の中に、h3とpが入っています。
h3とpは、ブロックタイプとなりますので、デフォルト設定の幅が親に対して100%です。
そのため、特にCSSを指定しなくても、書いた順番で縦に積みあがります。

インラインタイプとブロックタイプの違いは、以下の記事を参照しましょう。

子要素が左から順に横に並ぶ display: flex

display: flex を親要素に設定すると、子要素が左から順に1行で並びます

子要素が右から順に横に並ぶ flex-direction: row-reverse

dispyay: flexが指定された要素に、flex-directionを設定すると、並びの方向を変更できます。
無指定の場合は、デフォルト値のrowが適用されます。

flex-direction: row (デフォルト、左から右へ)
flex-direction: row-reverse(右から左へ)
flex-direction: column(上から下へ)
flex-direction: column-reverse(下から上へ)

要素の中で子要素が左右に別れて配置される justify-content: space-between

flexの子要素を、左右の余白を無くして均等配置できます。
justify-content: space-between; を指定します。

画像の例では、header-inner要素の3つの子要素(logo、nav-button、gnav)がありますが、PCの場合はnav-buttonが非表示なので、logoとgnavが左右に分かれて表示されています。

他のオプションは、このような動きをします。

justify-content: space-around; /*左右余白アリの均等配置*/
justify-content: flex-start; /*左寄せ横並び*/
justify-content: flex-end; /*右寄せ横並び*/

要素をもとの位置から少しだけズラしたい position: relative +位置指定

position: relative を指定すると、相対配置(元の場所からの位置設定)の設定ができます。
1枚目は、po20tクラスを付与し、position: relativeに加えて、top: -20pxを指定しています。
マイナスの数値では上に上がり、プラスでは下に下がります)

2枚目は、po20rクラスを付与し、position: relativeに加えて、right: -20pxを指定しています。
マイナスの数値では右にずれ、プラスでは左にずれます)

position指定しているときに使える位置設定には、以下の4つがあります。

top 上から
bottom 下から
left 左から
right 右から

positionには、absolute(絶対配置)や、fixed(画面へ固定)、sticky(要素内でスクロールが終わるまで固定配置)などがあります。

mdn web docs: position
https://developer.mozilla.org/ja/docs/Web/CSS/position

画面の中に要素を常に固定したい position:fixed +位置指定

メニューアイコン、お問い合わせやSNSボタンなど、重要度が高いものを画面内に固定表示する場合があります。
その場合は、position:fixed を指定します。
画像の例では、ヘッダーがスクロールされても画面の上部に固定されています。

top: 0
left:0
の設定によって、位置を指定し、width: 100% によって幅を設定しています。

z-index: 10 という箇所は、positionを使った場合に指定できる「重ね順」の設定です。
数値が大きいほど、上に表示されます。

mdn web docs: z-index
https://developer.mozilla.org/ja/docs/Web/CSS/z-index

  • URLをコピーしました!

この記事を書いた人

デジタルハリウッド(専門スクール)講師、大学非常勤講師。
Webサイトのデザイン・コーディング・PHPやJavaScriptによるプログラミング、サーバー設定などのスキルを保有し、企業や事業主からの依頼によりサイト制作を行っている。
クライアントの希望によって会社案内やパンフレットのデザイン、動画制作案件も請けている。
SIer企業でのシステムエンジニアを十数年経験後、2011年よりフリーランスへ転向。

目次