Grid container و ستونهای برابر
فرزندان مستقیم والد grid به grid item تبدیل میشوند.
.cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem;}
ساخت شبکههای دوبعدی واکنشگرا با تعریف ستون و ردیف، فاصلهگذاری و جایگذاری دقیق اجزا. Grid برای چیدمان دوبعدی ردیف و ستون مناسب است. والد را grid container کنید و اندازهٔ trackها را با واحدهای منعطف و توابع اندازهگذاری تعریف کنید. خطوط Grid از ۱ شمارهگذاری میشوند و placement عنصر را میتوان با خط شروع و پایان، span یا نام area مشخص کرد. ترتیب معنایی DOM را مستقل از جایگاه بصری نگه دارید. از این صفحه بهعنوان مرجع سریع استفاده کنید و مثالها و نکتهها را با نسخهٔ ابزار، نیاز و شرایط واقعی پروژهٔ خود تطبیق دهید.
فرزندان مستقیم والد grid به grid item تبدیل میشوند.
.cards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1rem;}minmax حداقل و حداکثر track را تعیین میکند و از کوچکشدن نامحدود جلوگیری میکند.
.layout { display: grid; grid-template-columns: minmax(14rem, 1fr) 3fr; grid-template-rows: auto minmax(12rem, 1fr); gap: 1rem;}برای ردیفهایی که خودکار ساخته میشوند اندازهٔ پایه مشخص کنید.
.gallery { display: grid; grid-template-columns: repeat(3, 1fr); grid-auto-rows: minmax(8rem, auto);}خط نامدار برای placement خواناتر از شمارههای بدون معناست.
.page { display: grid; grid-template-columns: [sidebar-start] 16rem [sidebar-end content-start] 1fr [content-end];}main { grid-column: content-start / content-end; }عنصر را از خط آغاز تا خط پایان ستون یا ردیف قرار دهید.
.feature { grid-column: 1 / 3; grid-row: 1 / 3;}span تعداد trackهایی را میگوید که عنصر میپوشاند.
.wide-card { grid-column: span 2; }.tall-card { grid-row: span 2; }نقشهٔ نامدار، ساختار layout را در CSS آشکار میکند.
.dashboard { display: grid; grid-template-areas: "header header" "nav main" "footer footer"; grid-template-columns: 14rem 1fr; gap: 1rem;}.dashboard-header { grid-area: header; }.dashboard-nav { grid-area: nav; }.dashboard-main { grid-area: main; }.dashboard-footer { grid-area: footer; }auto-flow نحوهٔ پرشدن grid را تعیین میکند؛ dense میتواند جای خالی بصری را پر کند ولی ترتیب دیداری را تغییر میدهد.
.tiles { display: grid; grid-auto-flow: row; grid-auto-rows: minmax(8rem, auto); gap: 0.75rem;}کارتها در فضای موجود جا میگیرند و در عرض کم به یک ستون میرسند.
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); gap: 1rem;}auto-fill track خالی را نگه میدارد؛ auto-fit track خالی را collapse میکند تا آیتمهای موجود فضا بگیرند.
.catalog { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 1rem;}breakpoint را برای تغییر واقعی ساختار اضافه کنید، نه برای هر اندازهٔ جزئی.
.content-grid { display: grid; grid-template-columns: 1fr; gap: 1rem;}@media (min-width: 48rem) { .content-grid { grid-template-columns: 16rem minmax(0, 1fr); }}dense میتواند آیتمهای بعدی را در خانههای خالی بچیند؛ فقط وقتی استفاده کنید که ترتیب دیداری با ترتیب DOM تعارض ندارد.
.masonry-like { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-flow: row dense; gap: 1rem;}justify/align content فضای شبکه را کنترل میکنند؛ place-items تراز پیشفرض itemها را تعیین میکند.
.grid { display: grid; place-content: center; place-items: stretch; gap: 1rem;}برای یک خانهٔ مشخص، تراز مستقل تعریف کنید.
.card--featured { justify-self: stretch; align-self: start;}subgrid اجازه میدهد ردیف یا ستون فرزند از trackهای grid والد استفاده کند.
.cards { display: grid; grid-template-columns: repeat(3, 1fr);}.card { display: grid; grid-row: span 3; grid-template-rows: subgrid;}placement و dense نباید ترتیب خواندن با صفحهکلید و screen reader را گمراه کند.
1. ترتیب DOM را با ترتیب معنایی محتوا هماهنگ کنید.2. placement بصری را برای polish استفاده کنید، نه برای بازنویسی جریان محتوا.3. صفحهکلید و screen reader را روی layout نهایی آزمایش کنید.شبکه را روی والد با display: grid فعال کنید و ستونها را با grid-template-columns تعریف کنید.
برای ستونهای هماندازه از repeat(3, 1fr) و برای اندازههای محتوایی از auto استفاده کنید.
با minmax() حداقل و حداکثر اندازه را کنترل کنید؛ برای کارتهای منعطف repeat(auto-fit, minmax(16rem, 1fr)) را بسنجید.
فاصله بین ردیف و ستون را با gap یا بهصورت جداگانه با row-gap و column-gap تنظیم کنید.
ارتفاع ردیفهای ضمنی را با grid-auto-rows مدیریت کنید و از اندازههای ثابت شکننده پرهیز کنید.
جایگاه عنصر را با grid-column و grid-row تعیین کنید و محدودهها را از ۱ شروعشده بخوانید.
برای الگوهای نامنظم از grid-template-areas استفاده کنید و نامگذاری را با ساختار معنایی هماهنگ نگه دارید.
برای ترازبندی کل شبکه justify-content و align-content و برای آیتمها justify-items و align-items را بهکار ببرید.
محتوای طولانی را با minmax(0, 1fr) یا min-width: 0 از سرریز ناخواسته حفظ کنید.
ترتیب DOM را منطقی نگه دارید؛ جابهجایی بصری نباید ترتیب صفحهکلید و خوانشگر صفحه را گمراه کند.
با auto-fit خانههای خالی جمع میشوند؛ auto-fill جای خانهها را حفظ میکند—هر دو را با عرض محتوای واقعی بسنجید.
برای محدودکردن تعداد ستون، repeat() را با minmax() و breakpointهای واقعی ترکیب کنید.