1. ホーム
  2. html

[解決済み] CSSのテーブルレイアウト:なぜtable-rowはマージンを受け付けないのですか?

2022-10-30 14:08:45

質問

.container {
  width: 850px;
  padding: 0;
  display: table;
  margin-left: auto;
  margin-right: auto;
}
.row {
  display: table-row;
  margin-bottom: 30px;
  /* HERE */
}
.home_1 {
  width: 64px;
  height: 64px;
  padding-right: 20px;
  margin-right: 10px;
  display: table-cell;
}
.home_2 {
  width: 350px;
  height: 64px;
  padding: 0px;
  vertical-align: middle;
  font-size: 150%;
  display: table-cell;
}
.home_3 {
  width: 64px;
  height: 64px;
  padding-right: 20px;
  margin-right: 10px;
  display: table-cell;
}
.home_4 {
  width: 350px;
  height: 64px;
  padding: 0px;
  vertical-align: middle;
  font-size: 150%;
  display: table-cell;
}
<div class="container">
  <div class="row">
    <div class="home_1"></div>
    <div class="home_2"></div>
    <div class="home_3"></div>
    <div class="home_4"></div>
  </div>

  <div class="row">
    <div class="home_1"></div>
    <div class="home_2"></div>
  </div>
</div>

私の質問は、次のようにマークされた行に関連しています。 HERE と書かれた行についてです。行が近すぎることがわかったので、下マージンを入れて行を区切ろうとしたのですが 残念ながらうまくいきません。テーブルのセルにマージンを追加して、行を分離する必要があります。

この動作の背景にはどのような理由があるのでしょうか。

また、私がやっているように、このストラテジーを使ってレイアウトを行うことは問題ないのでしょうか。

[icon] - text      [icon] - text
[icon] - text      [icon] - text

それとももっといい方法があるのでしょうか?

どのように解決するのですか?

CSS 2.1標準の17.5.3項を参照してください。を使用する場合 display:table-row を使用する場合,DIVの高さは,単に table-cell 要素の高さによって決定される。したがって,それらの要素上のmargin,padding及びheightは影響を与えない。

http://www.w3.org/TR/CSS2/tables.html