16
16

More than 3 years have passed since last update.

display: table; の使い方

Last updated at Posted at 2019-11-17

使い方

横に並べたい要素にdisplay: table-cell;を指定し、その要素を囲む親要素にdisplay: table;を指定する。
display: table;はHTMLのtable要素を指定したテーブルレイアウトをやっていることは同じ。それをCSSだけで実現できる。
高さを揃えた横並びのレイアウトや、縦方向への中央揃えが簡単にできるようになる。

<div class="parent">
  <div class="child">aaa</div>
  <div class="child">bbb</div>
  <div class="child">ccc</div>
</div>
.parent {
  display: table;
  width: 100%;
  border: 2px solid red;
  margin-top: 10px;
}
.child {
  display: table-cell;
  border: 1px solid blue;
}

スクリーンショット 2019-11-17 9.53.27.png

display: table; を指定したした要素はそのままだとこ要素分しか広がらないので、画面横幅いっぱいに広げるためにwidth: 100%;を指定している。

  • width: 100%; を指定しなかった場合
    スクリーンショット 2019-11-17 9.56.49.png

display: table-cell; で指定した子要素どうしに間隔をあけたい場合

子要素にmarginを指定するのでなく、親要素にborder-collapse: separate;,border-spacing:プロパティを指定する。

.parent {
  display: table;
  width: 100%;
  border: 2px solid red;
  margin-top: 10px;
  border-collapse: separate;
  border-spacing: 10px 5px;
}

スクリーンショット 2019-11-17 10.06.46.png

複数行にしたい場合

<div class="skill-wrapper">
          <div class="table-row">
            <div class="skill-box">
              <img src="" alt="">
              <h3 class="skill-title">HTML</h3>
              <p class="skill-text">テキストテキストテキストテキストテキストテキスト</p>
            </div>
            <div class="skill-box">
              <img src="" alt="">
              <h3 class="skill-title">CSS</h3>
              <p class="skill-text">テキストテキストテキストテキストテキストテキスト</p>
            </div>
            <div class="skill-box">
              <img src="" alt="">
              <h3 class="skill-title">Ruby</h3>
              <p class="skill-text">テキストテキストテキストテキストテキストテキスト</p>
            </div>
          </div>
          <div class="table-row">
            <div class="skill-box">
              <img src="" alt="">
              <h3 class="skill-title">Git</h3>
              <p class="skill-text">テキストテキストテキストテキストテキストテキスト</p>
            </div>
            <div class="skill-box">
              <img src="" alt="">
              <h3 class="skill-title">jQuery</h3>
              <p class="skill-text">テキストテキストテキストテキストテキストテキスト</p>
            </div>
            <div class="skill-box">
              <img src="" alt="">
              <h3 class="skill-title">XML</h3>
              <p class="skill-text">テキストテキストテキストテキストテキストテキスト</p>
            </div>
          </div>
        </div>
.skill-wrapper {
  display: table;
  width: 100%;
  table-layout:fixed;
}
.table-row {
  display:table-row;
}
.skill-wrapper .skill-box {
  display: table-cell;
}
16
16
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
16
16