فرانت اند

طراحی ریسپانسیو با CSS Grid

Grid سیستمی دوبعدی برای چیدمان است؛ یعنی هم ردیف‌ها و هم ستون‌ها را کنترل می‌کند. با چند خط CSS می‌توان شبکه‌ای ساخت که خودش با اندازه‌ی صفحه سازگار می‌شود.

  • نویسنده تیم تتا
  • ۷ دقیقه مطالعه
  • به‌روزرسانی:
طراحی ریسپانسیو با CSS Grid

شروع کار با Grid

برای ساخت شبکه کافی است روی عنصر والد display: grid بگذارید و ستون‌ها را تعریف کنید. واحد fr فضای باقی‌مانده را بین ستون‌ها تقسیم می‌کند:

css
.cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 24px;
}

ویژگی gap فاصله‌ی میان ردیف‌ها و ستون‌ها را تنظیم می‌کند، بدون اینکه به لبه‌ی بیرونی شبکه فاصله اضافه شود؛ همین باعث می‌شود نیازی به حاشیه‌های خاص برای اولین و آخرین آیتم نباشد.

ریسپانسیو بدون media query

ترکیب auto-fit و minmax() به مرورگر اجازه می‌دهد خودش تعداد ستون‌ها را بر اساس عرض موجود تعیین کند:

css
.cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
  gap: 24px;
}

در این مثال هر کارت حداقل ۲۶۰ پیکسل عرض دارد. در صفحه‌ی بزرگ چند ستون ساخته می‌شود و در موبایل به‌طور خودکار یک ستون می‌شود؛ بدون یک خط media query.

برای نمونه‌ی واقعی چنین چیدمانی، نمونه‌کارهای ما را ببینید.

تصویر انتزاعی مرورگر و گوشی با کارت‌های رنگی چیده‌شده در شبکه
با repeat(auto-fit, minmax()) تعداد ستون‌ها خودکار با عرض صفحه تنظیم می‌شود.

چیدمان با grid-template-areas

برای صفحه‌های کامل، نام‌گذاری ناحیه‌ها خوانایی کد را بالا می‌برد و تغییر چیدمان در عرض‌های مختلف را بسیار ساده می‌کند:

css
.page {
  display: grid;
  grid-template-areas:
    "header header"
    "main   aside"
    "footer footer";
  grid-template-columns: 1fr 320px;
}

@media (max-width: 800px) {
  .page {
    grid-template-areas: "header" "main" "aside" "footer";
    grid-template-columns: 1fr;
  }
}

Grid یا Flexbox؟

این دو رقیب نیستند و در کنار هم کار می‌کنند. قاعده‌ی ساده:

  • Flexbox: چیدمان یک‌بعدی (یک ردیف یا یک ستون)، مثل نوار ناوبری یا گروهی از دکمه‌ها.
  • Grid: چیدمان دوبعدی که ردیف و ستون را هم‌زمان کنترل می‌کند، مثل شبکه‌ی کارت‌ها یا ساختار کل صفحه.

نکته‌ی تکمیلی: ویژگی subgrid که حالا در مرورگرهای مدرن پشتیبانی می‌شود، اجازه می‌دهد آیتم‌های تودرتو از ردیف‌ها و ستون‌های والد پیروی کنند و مثلاً عنوان و دکمه‌ی کارت‌های هم‌ردیف دقیقاً هم‌تراز شوند.

برای حرکت و انتقال میان حالت‌های چیدمان، انیمیشن‌های روان با CSS و JavaScript را بخوانید؛ برای تکرار‌پذیری، اصول کامپوننت‌نویسی کمک می‌کند.

دسترس‌پذیری و ترتیب محتوا

Grid اجازه می‌دهد ترتیب بصری را از ترتیب سند جدا کنید (با order یا جای‌گذاری صریح)، اما صفحه‌کلید و صفحه‌خوان‌ها همچنان ترتیب DOM را دنبال می‌کنند. اگر این دو با هم نخوانند، تجربه‌ی کاربر دچار سردرگمی می‌شود.

  • ساختار HTML را اول بر اساس منطق محتوا بنویسید.
  • تغییر ترتیب بصری را فقط وقتی لازم است و با آزمون صفحه‌کلید انجام دهید.
  • برای جهت راست‌به‌چپ از ویژگی‌های منطقی مثل margin-inline استفاده کنید.

فهرست کامل را در چک‌لیست دسترس‌پذیری وب و مستندات MDN ببینید.

پرسش‌های متداول

آیا CSS Grid در همه‌ی مرورگرها پشتیبانی می‌شود؟

بله؛ Grid در تمام مرورگرهای مدرن پشتیبانی کامل دارد. تنها ویژگی‌های جدیدتر مثل subgrid را قبل از استفاده در مرورگرهای هدف بررسی کنید.

تفاوت auto-fit و auto-fill چیست؟

auto-fill ستون‌های خالی را نگه می‌دارد، اما auto-fit آن‌ها را جمع می‌کند و آیتم‌های موجود را کش می‌دهد.

آیا Grid روی سئو اثر دارد؟

مستقیم نه؛ اما چیدمان ریسپانسیو و پایدار به تجربه‌ی موبایل و معیار CLS کمک می‌کند که بخشی از تجربه‌ی صفحه است.

دیدگاه‌ها

    هنوز دیدگاهی ثبت نشده است. اولین نفر باشید.

    دیدگاه‌ها پس از بررسی منتشر می‌شوند.