CSS の display を覚えれば ブログのレイアウト調整はらくちん

2020/03/30

CSS HTML ブログ

t f B! P L

こんにちは! HARU( @HARU )です。

ブログのカスタマイズ( レイアウト調整 )をしているときに、何かうまくいかないなってことありませんか?

もしかしたら、display の指定をすることで解決するかもしれません!

ということで、ブログのカスタマイズをするとき、必ずと言っていいほど必要になってくる CSS である display について、簡単に覚え書きしておこうと思います。

私は、この CSS プロパティ( display )を知ってから、カスタマイズの幅が広がり、スムーズな変更ができるようになりました。

ブログのレイアウト調整に必要最低限のプロパティを、HTML 初心者でもわかるようにまとめましたので、参考にしてください。

display とは

display とは CSS のプロパティの一つで要素の表示形式を指定するときに使います。

display にて表示形式を指定していない要素のほとんどは、ブラウザの初期値が自動で指定されます。

以上の事から display を使い、要素の表示形式を指定することにより、ブログのカスタマイズ( レイアウトの調整 )をしやすくすることができます。

display の初期値について

前述した通り display を指定していない要素は、ブラウザの初期値により自動で指定されます。

自動で指定される表示形式としては block または inline のどちらかで指定されています。

例外はあるかもしれませんが、この認識で問題ないかと思います。

ちなみに p タグや h タグ、div タグなどは block に指定され、a タグや span タグなどは inline に指定されます。

display に主に設定する値

ブログのレイアウト変更に伴う display で設定したい値は以下の通りです。

この他にも設定することができますが、レイアウトの調整であればこれだけ覚えていれば十分だと思います。

  • block
  • inline-block
  • none

display: block

display: block 指定をすると、以下のような特徴があります。

  • 要素は縦に並ぶ
  • 幅と高さを指定できる
  • 余白を上下左右指定できる
  • 要素を中央配置する場合、margin を使う
  • 要素内を中央配置する場合、text-align を使う

要素は縦に並ぶ

要素は縦に並んでいきます。初期値の幅は、親要素いっぱいに広がっています。

display: block に自動指定される p タグをイメージしてください。

display block 縦に並ぶイメージ


  <p>要素1</p>
  <p>要素2</p>
  <p>要素3</p>

幅と高さを指定できる

幅と高さの指定をすることができます。

display block 幅と高さの指定をしたイメージ


  example {
    display: block;
    width: 100px;
    height: 100px;
  }

余白を上下左右指定できる

余白( padding や margin )を上下左右指定することができます。

display block 余白を上下左右に指定したイメージ


  example {
    display: block;
    padding: 100px;
    margin: 100px;
  }

要素を中央配置する場合、 margin を使う

block 要素ごと、中央に配置したい場合は margin を使います。

display block 要素を中央配置したイメージ


  example {
    display: block;
    width: 100px;
    height: 100px;
    margin: 0 auto;
  }

要素内を中央配置する場合、 text-align を使う

display に block を指定した際に、要素の中身を中央に配置したい場合は text-align を使います。

display block 要素内を中央配置にしたイメージ


  example {
    display: block;
    width: 300px;
    text-align: center;
  }

block と inline との違い

display の初期値について で説明した通り、display に自動で指定される表示形式としては block または inline のどちらかになります。

inline は block と違い、幅と高さの指定ができず、余白も左右のみしか調整することができません。

そのため、ブログのレイアウトでわざわざ指定することは少ないと考えています。

事実、私も inline に設定して調整したことはありません。

display: inline-block

inline-block は block と inline の2つの特徴を持ちます。

display に inline-block を指定をすると、以下のような特徴があります。

  • 要素は横に並ぶ
  • 幅、高さ、余白を指定できる
  • 要素を中央配置する場合、親要素に対して text-align を使う

要素は横に並ぶ

要素は横に並んでいきます。初期値の幅は、要素の中身までです。

display inline-block 横に並ぶイメージ


  <p>要素1</p>
  <p>要素2</p>
  <p>要素3</p>

  p {
    display: inline-block;
  }

幅、高さ、余白を指定できる

display: block と同様に、幅、高さ、余白を指定することができます。

display inline-block 幅、高さ、余白を指定したイメージ


  要素1 {
    display: inline-block;
    width: 100px;
    height: 100px;
  }
  要素2 {
    display: inline-block;
    width: 200px;
    height: 200px;
    padding: 50px;
  }
  要素3 {
    display: inline-block;
    width: 150px;
    height: 150px;
    margin: 100px;
  }

要素を中央配置する場合、親要素に対して text-align を使う

inline-block の要素ごとに中央配置する場合は、親要素に対して text-align を使います。

display inline-block 要素を中央配置したイメージ


  <div>
    <p>要素1</p>
    <p>要素2</p>
    <p>要素3</p>
  </div>

  div {
    text-align: center;
  }
  p {
    display: inline-block;
    background: yellow;
    width: 100px;
  }

display: none

display: none を設定することで、要素を非表示にすることができます。

レスポンシブデザインの Web サイトで PC では表示させたいけど、スマホでは表示させたくないときに使えます。

以下の例では、画面サイズが 650px 以下になったときに要素3が非表示になります。

display none 動作イメージ


  <div>
    <p>要素1</p>
    <p>要素2</p>
    <p class="none">要素3</p>
  </div>

  div {
    text-align: center;
  }
  p {
    display: inline-block;
    background: yellow;
    width: 100px;
  }
  @media screen and (max-width:650px){
  /*画面幅が650px以下は非表示にする*/
  p.none {
   display: none;
  }
  }

display 設定値 その他( display: flex )

inline-block だけでも横並びのリストを作成することができますが、display: flex を親要素に設定することでレイアウトの調整幅が広がります。

display flex イメージ


  <div class="flex">
    <p>要素1</p>
    <p>要素2</p>
    <p>要素3</p>
  </div>

  div.flex {
    display: flex;
    justify-content: center; /* 横方向中央配置 */
    align-items: center; /* 縦方向中央配置 */
    text-align: center;
    height: 200px;
  }
  p {
    display: inline-block;
    background: yellow;
    width: 100px;
    margin: 0 10px;
  }

flex の便利機能

justify-content: space-around

justify-content: space-around は、flex 内の要素を均等配置することができます。

後述する space-between と違い、左右に隙間がある均等配置になります。

space-around イメージ


  <div class="flex">
    <p>要素1</p>
    <p>要素2</p>
    <p>要素3</p>
  </div>

  div.flex {
    display: flex;
    justify-content: space-around; /* 左右隙間あり横方向均等配置 */
    align-items: center; /* 縦方向中央配置 */
    text-align: center;
    height: 200px;
  }
  p {
    display: inline-block;
    background: yellow;
    width: 100px;
  }

justify-content: space-between

justify-content: space-between も、flex 内の要素を均等配置することができます。

こちらは左右に隙間の無い均等配置となります。

space-between イメージ


  <div class="flex">
    <p>要素1</p>
    <p>要素2</p>
    <p>要素3</p>
  </div>

  div.flex {
    display: flex;
    justify-content: space-between; /* 左右隙間なし横方向均等配置 */
    align-items: center; /* 縦方向中央配置 */
    text-align: center;
    height: 200px;
  }
  p {
    display: inline-block;
    background: yellow;
    width: 100px;
  }

flex-direction: column

通常、flex の要素は横に並びますが、flex-direction: column を使うことによって、縦に並び変えることも可能です。

column イメージ


  <div class="flex">
    <p>要素1</p>
    <p>要素2</p>
    <p>要素3</p>
  </div>

  div.flex {
    display: flex;
    justify-content: space-around; /* 上下隙間あり横方向均等配置 */
    align-items: center; /* 縦方向中央配置 */
    text-align: center;
    height: 200px;
    flex-direction: column; /* 縦並び配置 */
  }
  p {
    display: inline-block;
    background: yellow;
    width: 100px;
  }

flex-grow: 1

flex-grow: 1 を子要素に適用することによって、子要素の大きさを自動的に調整してくれるようになります。

レスポンシブデザインの Web サイトには嬉しい機能ですね。

flex-grow イメージ


  <div class="flex">
    <p class="a">要素1</p>
    <p class="b">要素2</p>
    <p class="c">要素3</p>
  </div>

  div.flex {
    display: flex;
    justify-content: space-between; /* 左右隙間なし横方向中央配置 */
    align-items: center; /* 縦方向中央配置 */
    text-align: center;
    height: 200px;
  }
  .flex p{
    flex-grow: 1; /* 要素の伸縮 */
    display: inline-block;
  }
  p.a {
    background: yellow;
  }
  p.b {
    background: #4d90fe;
  }
  p.c {
    background: #4dfe8c;
  }

flex-wrap: wrap

通常、flex は改行を禁止していますが、flex-wrap: wrap に指定することによって改行を有効にすることが可能です。

レスポンシブデザインの Web ページでは、wrap を指定することで画面サイズが変わったとき、要素の改行を可能にすることにより、ボックスが小さくなりすぎるのを防げます。

以下の例では flex-wrap: wrap に指定することにより、画面サイズが小さくなったとき改行され、ボックス自体が圧縮されないようにしています。

wrap イメージ


  <div class="flex">
    <p class="a">要素1</p>
    <p class="b">要素2</p>
    <p class="c">要素3</p>
  </div>

  div.flex {
    display: flex;
    justify-content: space-between; /* 左右隙間なし横方向中央配置 */
    text-align: center;
    flex-wrap: wrap; /* 改行を有効にする */
  }
  .flex p{
    flex-grow: 1; /* 要素の伸縮 */
    display: inline-block;
    min-width: 200px;
  }
  p.a {
    background: yellow;
  }
  p.b {
    background: #4d90fe;
  }
  p.c {
    background: #4dfe8c;
  }

flex-grow と wrap の合わせ技

以下のように flex に対して flex-wrap: wrap で改行を有効に、子要素に flex-grow: 1、width: 50% を指定します。

すると最初から要素1、要素2は横並び、要素3は改行され下に表示されてつつ、親要素いっぱいまで広がる状況を作り出すことができます。

flex-grow と wrap の合わせ技イメージ


  <div class="flex">
    <p class="a">要素1</p>
    <p class="b">要素2</p>
    <p class="c">要素3</p>
  </div>

  div.flex {
    display: flex;
    justify-content: space-between; /* 左右隙間なし横方向中央配置 */
    text-align: center;
    flex-wrap: wrap; /* 改行を有効にする */
  }
  .flex p{
    flex-grow: 1; /* 要素の伸縮 */
    display: inline-block;
    width: 50%; /* 親要素に対して 50% */
  }
  p.a {
    background: yellow;
  }
  p.b {
    background: #4d90fe;
  }
  p.c {
    background: #4dfe8c;
  }

まとめ

ブログのカスタマイズ( レイアウト調整 )は、display の設定がわからず、CSS の反映などがうまくいくことが実体験上多いです。

今回説明した内容以外にも display の設置値はありますが、最低限この記事の内容を覚えておけば、何とかやっていける程度のヒントにはなると思います。

また、CSS でリストボックスを作る際には、flex を用いて作成すると楽にできるので、参考にしてみてください。

本記事では p タグを無理やり inline-block に設定し作成していますが、リストタグを用いたボックス作成も後でやってみようと思います。

QooQ