web-dev-qa-db-ja.com

CSSグリッド内でコンテンツを垂直方向に整列

下にCSSグリッドがあり、コンテンツ(今のところ文字)をセル内で垂直に配置したいと思います。これを達成するための最良の方法は何ですか? vertical-align:middleセル上では何もしていないようです、align-items:center;グリッドコンテナで機能しましたが、高さはすべて異なりました。

body {
  margin: 40px;
}

.wrapper {
                display: grid;
    grid-gap: 10px;
                grid-template-columns: [col] 100px [col] 100px [col] 100px;
                grid-template-rows: [row] auto [row] auto [row] ;
                background-color: #fff;
                color: #444;
        }

        .box {
                background-color:#444;
                color:#fff;
                padding:20px;
                font-size:150%;
        }

        .a {
                grid-column: col / span 2;
                grid-row: row 1 / 3;
        }
        .b {
                grid-column: col 3 / span 1;
                grid-row: row ;
        }
        .c {
                grid-column: col 3 / span 1;
                grid-row: row 2 ;
        }
        .d {
                grid-column: col / span 1;
                grid-row: row 3;
        }

        .e {
                grid-column: col 2 / span 1;
                grid-row: row 3;
        }

.f {
  grid-column: col 3 / span 1;
  grid-row: row 3;
}
<div class="wrapper">
  <div class="box a">A</div>
  <div class="box b">B</div>
  <div class="box c">C</div>
  <div class="box d">D</div>
  <div class="box e">E</div>
  <div class="box f">F</div>
</div>
5
user13286

垂直方向の中央に配置するだけの場合は、ボックスクラスにdisplay:flex;align-items: center;を追加できます。

body {
  margin: 40px;
}

.wrapper {
  display: grid;
  grid-gap: 10px;
  grid-template-columns: [col] 100px [col] 100px [col] 100px;
  grid-template-rows: [row] auto [row] auto [row];
  background-color: #fff;
  color: #444;
}

.box {
  background-color: #444;
  color: #fff;
  padding: 20px;
  font-size: 150%;
  display: flex;
  align-items: center;
}

.a {
  grid-column: col / span 2;
  grid-row: row 1 / 3;
}

.b {
  grid-column: col 3 / span 1;
  grid-row: row;
}

.c {
  grid-column: col 3 / span 1;
  grid-row: row 2;
}

.d {
  grid-column: col / span 1;
  grid-row: row 3;
}

.e {
  grid-column: col 2 / span 1;
  grid-row: row 3;
}

.f {
  grid-column: col 3 / span 1;
  grid-row: row 3;
}
<div class="wrapper">
  <div class="box a">A</div>
  <div class="box b">B</div>
  <div class="box c">C</div>
  <div class="box d">D</div>
  <div class="box e">E</div>
  <div class="box f">F</div>
</div>
6
Scath