CSS Subgrid ทำให้ grandchildren align กับ parent grid ได้
grid-template-columns: subgrid ส่ง grid track ของ parent ลงมาให้ลูกหลานใช้ต่อ — ไม่ต้องวาง column ซ้ำอีกชั้น
ปัญหาคลาสสิก: card grid แต่ละ card มี header, body, footer — อยากให้ทุก footer อยู่บรรทัดเดียวกันข้าม card แต่ทำไม่ได้เพราะแต่ละ card คือ grid container ของตัวเอง
Subgrid แก้ปัญหานี้โดยตรง:
.grid {
display: grid;
grid-template-columns: repeat(3, 1fr);
grid-template-rows: auto 1fr auto; /* header / body / footer */
}
.card {
display: grid;
grid-row: span 3;
grid-template-rows: subgrid; /* รับ track ของ parent มาใช้ */
}
แต่ละ .card ไม่ต้องกำหนด row ซ้ำ — ใช้ track เดียวกันกับ parent grid เลย ทำให้ header, body, footer ของทุก card align กันพอดีโดยอัตโนมัติ
Support: Chrome 117+, Firefox 71+, Safari 16+ — ใช้ได้แล้วใน production