最近、この問題に出会いました。単純な<h1>
タグがあり、垂直方向に中央揃えしたい場合、ウィンドウのサイズを変更しても、グリッドボックス行の中央に残り、水平位置は無視されます。
グリッドコンテナに関しては、vertical-align
は効果がないことを知っています。それで解決策は何でしょうか?
この質問は重複としてマークされていますが、他の質問ではテキストの水平方向のセンタリングについて質問していますが、ここでは垂直方向のセンタリングについて質問しています。
良い質問-ラッパーで問題を回避し、display:tableを使用しました
https://jsfiddle.net/8vjvnznk/
.wrapper {
display: grid;
grid-template-columns: 100px 100px 300px;
grid-template-rows: 200px 200px;
grid-gap: 10px;
background-color: #fff;
color: #444;
align-content: space-evenly;
}
.workaround{
border: 1px solid green;
margin: 0;
padding: 0;
height: 100%;
width: 100%;
display: table;
}
h1{
font-size: 1em;
border: 1px solid yellow;
display: table-cell;
vertical-align: middle;
}
#boxc{
background: red;
}
.box {
background-color: #444;
color: #fff;
border-radius: 5px;
padding: 20px;
font-size: 100%;
}
<div class="wrapper">
<div class="box a">A</div>
<div class="box b">B</div>
<div class="box c" id="boxc">
<div class="workaround">
<h1>
The heading in question!
</h1>
</div>
</div>
<div class="box d">D</div>
<div class="box e">E</div>
<div class="box f">F</div>
</div>
テーブルは必要ありません。なぜグリッドをテーブルと混在させるのですか?
align-items:center
を使用して、垂直方向のセンタリングを実現できます。
グリッドセルが<h1>
である場合、align-self:center
を使用して、コンテンツを<h1>
に垂直方向に中央揃えできます。