در حال بارگذاری...

ناحیه‌های Grid در CSS

درس آیتم‌های Grid شمارهٔ خط و span را یاد داد. ناحیه‌های نام‌دار سؤال دوستانه‌تری می‌پرسند: می‌توانید صفحه را با کلمه بکشید — header، sidebar، main، footer — و هر فرزند همان برچسب را بگیرد؟ نقشه با grid-template-areas است؛ سنجاق با grid-area.

جعبهٔ ابزار ناحیه‌های grid

📊 ناحیه‌های grid یک‌نگاهه

ویژگی / نشانه کار روزمره
grid-template-areas روی کانتینر: رشته‌های نقل‌قول‌دار هر ردیف را نام می‌گذارد
grid-area روی آیتم: کدام ناحیهٔ نام‌دار مال این فرزند است
نام تکراری همان نام در سلول‌های مجاور = یک مستطیل کشیده‌شده
. (نقطه) سلول خالی بدون نام
Trackهای قالب اندازه را هنوز با grid-template-columns / rows می‌گذارید

هر رشتهٔ داخل گیومه یک ردیف نقشه است. نام‌های داخل ردیف با فاصله جدا می‌شوند. همهٔ ردیف‌ها باید تعداد سلول یکسان داشته باشند؛ وگرنه قالب نامعتبر می‌شود.

grid-template-areas — نقشه را بکشید

چیدمانی را که در ذهن دارید با برچسب‌های ساده بنویسید. پوستهٔ کلاسیک صفحه اغلب چهار نقش نام‌دار روی سه ردیف است.

نقشهٔ نام‌دار صفحه

css
.shell {
display: grid;
grid-template-columns: 14rem 1fr;
grid-template-rows: auto 1fr auto;
grid-template-areas:
"header header"
"aside  main"
"footer footer";
gap: 1rem;
}

grid-area — هر فرزند را سنجاق کنید

هر فرزند یکی از نام‌های نقشه را برمی‌دارد. کلاس می‌تواند BEM بماند؛ Grid همان توکن ناحیه را می‌خواند.

نقش‌های نام‌دار را بدهید

css
.shell__header { grid-area: header; }
.shell__aside  { grid-area: aside; }
.shell__main   { grid-area: main; }
.shell__footer { grid-area: footer; }

با تکرار نام بکشید

برای پهن کردن یک ناحیه، همان نام را در همهٔ سلول‌هایی که باید مال او باشند بنویسید. ناحیه باید مستطیل توپر بماند — شکل L ممنوع.

هیرو تمام عرض را می‌گیرد

css
.magazine {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
grid-template-areas:
"hero  hero  hero"
"card1 card2 card3";
gap: 0.75rem;
}

.magazine__hero { grid-area: hero; }

سلول خالی با نقطه

یک . تنها یعنی حفره. وقتی تختهٔ کارت باید جا خالی بگذارد بدون اینکه اسم جعلی بسازید، مفید است.

سلول خالی در نقشه

css
.board {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-areas:
"alpha ."
"beta  gamma";
gap: 0.5rem;
}

.board__a { grid-area: alpha; }
.board__b { grid-area: beta; }
.board__c { grid-area: gamma; }

عادت آرام ناحیه‌های نام‌دار

اول نقشه را در grid-template-areas بکشید، trackها را با columns/rows اندازه بدهید، بعد فرزندان را با grid-area سنجاق کنید. نام‌ها کوتاه و مستطیلی بمانند. وقتی یک جای‌گذاری تک‌نفره از بازنویسی کل نقشه روشن‌تر است، به grid-column / grid-row برگردید. بازنویسی ریسپانسیو نقشه برای درس Grid Responsive می‌ماند.

پوستهٔ نام‌دار با track

css
.page {
display: grid;
grid-template-columns: minmax(12rem, 16rem) 1fr;
grid-template-areas:
"nav content"
"nav content";
gap: 1.25rem;
}

.page__nav { grid-area: nav; }
.page__content { grid-area: content; }

خودتان تمرین کنید

  1. با grid-template-areas نقشهٔ header / aside+main / footer بکشید.
  2. چهار فرزند را با grid-area هم‌نام بدهید.
  3. هیروی سه‌ستونه بسازید که hero را در ردیف اول تکرار کند.
  4. در تختهٔ دو در دو یک سلول را با . خالی بگذارید.
  5. اندازهٔ track را روی کانتینر نگه دارید؛ تعویض نقشه را برای درس ریسپانسیو Grid یادداشت کنید.

اشتباه‌های رایج

  • نام‌گذاری ناحیهٔ Lشکل یا تکه‌تکه (ناحیه‌ها باید مستطیل باشند)
  • تعداد سلول ناهماهنگ بین ردیف‌های نقل‌قول‌دار
  • گذاشتن grid-template-areas روی فرزند به‌جای کانتینر
  • تصور اینکه نام ناحیه همان سلکتور کلاس CSS است — این‌ها توکن قالب‌اند
  • حذف grid-template-columns / rows به امید اینکه فقط نام‌ها اندازه بدهند

جمع‌بندی

  • ناحیه‌های نام‌دار چیدمان را به نقشهٔ خوانا تبدیل می‌کنند
  • grid-template-areas مال کانتینر است؛ grid-area مال هر آیتم
  • برای span نام را تکرار کنید؛ برای خالی . بگذارید
  • ناحیه‌ها را مستطیلی نگه دارید و با اندازهٔ track جفت کنید
  • جای‌گذاری خطی هنوز کار می‌کند؛ تغییر نقشهٔ ریسپانسیو بعدی است

🧠 دانش خود را بیازمایید

آماده شروع

دانش خود را بیازمایید

خود را با این آزمون تعاملی به چالش بکشید و ببینید موضوع را چقدر خوب درک کرده‌اید

❓
8
سوالات
🎯
70%
برای قبولی
♾️
∞
زمان
🔄
∞
تلاش‌ها

📝 دستورالعمل‌ها

  • هر سوال را با دقت بخوانید
  • بهترین پاسخ را برای هر سوال انتخاب کنید
  • می‌توانید آزمون را هر چند بار که می‌خواهید تکرار کنید
  • پیشرفت شما در بالا نمایش داده می‌شود