これ まで
まずはCSSグリッドの説明から
- コラムレイアウトにはいろいろな方法がある
これまでCSSでのレイアウト方法には黎明期からいろいろありました。
初期はテーブルで組んだり、フロートだったりしましたが、要素を簡単に天地のセンターにすることがどうしても困難でした。
後にdisplay: tableが出てきたあたりからようやくようやく天地センターが可能になりましたが、やはり要素の並びに依存していました。
フレックスボックスの登場でようやく自由なレイアウトが可能になりましたが、同時に縦横を指定することは困難で、縦と横は別々のプロパティで枝分かれしていました。
また、レイアウトが左上から並ぶのは(入れ替えはできても)これまでと変わらず、ブラウザの横幅に応じて一段目の要素が二段目へ送られたり(それが良い面もありますが)、余白は子供の要素に指定するため各段の端のマージンを0にしないと行送りされてしまうなど(つまり横幅が何個になろうが右端のマージンは必ず0にするなどが困難)、自在なレイアウトとは言えません。CSSグリッドの登場CSSグリッドの登場によりようやく縦横任意に自在な指定が可能になりました。
この方法で初めて縦と横を同時に指定することが可能になりました。
MDNにも次のように明記してあります。
グリッドレイアウトは文字通り縦横(行と列)2次元で指定するまず親と子供が必要です。
親にdisplay: grid; これはこれまでと同じ。
そして指定方法は大きく2種類あります。
一つ目が縦横を明示的に指定する方法。
grid-template-columnsで列、grid-template-rowsで行を指定します。
たとえば、子供が9個の要素で、それらを縦横それぞれ3X3の配置にする場合
※縦:40px.横:60px
grid-template-columns: 60px 60px 60px;
grid-template-rows: 40px 40px 40px;
と指定します。
これで3x3のコラム段組みが完成します。
要素の余白はgrid-gap:で指定します。
縦横を個別に指定する場合はrow-gapおよびcolumn-gapとなります。
ただ、この方法は必要であろうとなかろうと9個の子要素は必ず記述する必要があります。
感覚的にはテーブルの指定方法とそれほど変わらない感じもあります。