CSSのsubgridがすべてのブラウザにサポートされたので、カード内の見出しやテキストを簡単に揃えることができます
Post on:2023年10月4日
先日の記事(Chrome 117でサポートされたCSSの6つの新しい機能とプロパティ)で触れましたがCCSS Gridのsubgrid
値が、grid-template-columns
とgrid-template-rows
の2つで設定できるようになりました。Safari, Firefoxではすでにサポートされていたので、これで主要ブラウザのすべてで利用できます。
CSSのサブグリッド(subgrid
)を使用すると、下記のように子要素(画像・見出し・テキスト)の水平グリッドも簡単に揃えることができます。
CSSのサブグリッド(subgrid)で子要素のグリッドを揃える
3つのカードがあり、それぞれに画像・見出し・テキストがあります。subgrid
以前は、子要素(画像・見出し・テキスト)をそれぞれのカードで揃えることはできませんでした。もしくは、個別に一つひとつ調整する必要がありました。
subgrid
以前: 水平のグリッドが揃っていない
subgrid
を使用すると、子要素のグリッドを揃えることが簡単にできます。
subgrid
以後: 水平のグリッドが美しく揃う
実際の動作は、デモページでご覧ください。「Use Subgrid?」のチェックボックスをオンにすると、subgrid
が適用されます。
※Chrome 117, Edge 117, Safari, Firefoxでご覧ください。
See the Pen
Take CSS Subgrid for a spin! by coliss (@coliss)
on CodePen.
CSSのサブグリッド(subgrid)のサポートブラウザ
CSSのサブグリッド(subgrid
)のサポートブラウザは、下記の通りです。
デモページの解説
まずは、HTMLから。main
要素に3つのカードをarticle
要素で実装しています。各カードには、画像・見出し・テキストのコンテンツがあります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
<main> <article class=card> <img src="https://picsum.photos/300/200?random=2" alt=""> <h2>Exploring</h2> <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit.</p> <a href="#">Read more...</a> </article> <article class=card> <img src="https://picsum.photos/300/200?random=3" alt=""> <h2>CSS Subgrid</h2> <p>Id dolor laborum vitae. Enim ex ratione consectetur omnis consequuntur optio provident, possimus laborum nulla fugit</p> <a href="#">Read more...</a> </article> <article class=card> <img src="https://picsum.photos/300/200?random=5" alt=""> <h2>Superpower</h2> <p>Lorem ipsum dolor sit amet consectetur, adipisicing elit.</p> <a href="#">Read more...</a> </article> </main> |
article
はdisplay: grid;
を使用して、親レイアウトコンテナによって定義されたトラックを使用します。これにより、カード内のコンテンツが配置しやすくなります。そして、grid-template-rows
の値にsubgrid
を設定します。親内の行を設定する必要はありません、親からの暗黙的なグリッドを使用して配置されます。
1 2 3 4 5 6 |
article { grid-row: span 4; display: grid; gap: 0.65rem; grid-template-rows: subgrid; 👈 } |
main
要素のスタイルは、下記の通りです。
1 2 3 4 5 6 7 |
main { padding: 1rem 0; display: grid; width: min(calc(100% - 2rem), 1280px); grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); position: relative; } |
元ネタは下記ポストより。
Available in all browsers as of Chrome 117! 🎉 https://t.co/So5TzBOdZ0
— jhey 🔨🐻✨ (@jh3yy) September 29, 2023
sponsors