دسترسی سریع


آموزش کامل CSS Grid پیشرفته | ساخت هر نوع چیدمانی با ۲۰+ مثال عملی

آموزش کامل CSS Grid پیشرفته | ساخت هر نوع چیدمانی با ۲۰+ مثال عملی
خلاصه مطلب

CSS Grid قدرتمندترین ابزار چیدمان دو بعدی در وب است. در این مقاله جامع، از مفاهیم پایه تا تکنیک‌های پیشرفته Grid مانند template areas، auto-fit، minmax، و چیدمان‌های پیچیده مجله‌ای و داشبورد را یاد می‌گیرید. همراه با ۲۰+ مثال واقعی و کدهای آماده.

مقدمه: CSS Grid چیست و چرا از Flexbox قدرتمندتر است؟

CSS Grid یک سیستم چیدمان دو بعدی است که به شما امکان می‌دهد هم سطرها (rows) و هم ستون‌ها (columns) را به طور همزمان کنترل کنید. در حالی که Flexbox فقط در یک جهت (ردیف یا ستون) کار می‌کند، Grid برای طراحی کل صفحات، داشبوردهای پیچیده، گالری‌ها و چیدمان‌های مجله‌ای ایده‌آل است.

مزایای اصلی CSS Grid نسبت به Flexbox:

  • کنترل همزمان سطر و ستون

  • امکان نام‌گذاری نواحی (grid-template-areas)

  • چیدمان‌های نامنظم و آوانگارد

  • ریسپانسیو کردن بدون Media Queries (با auto-fit و minmax)

  • همپوشانی المان‌ها (مانند position اما ساده‌تر)


مفاهیم پایه Grid (مرور سریع)

ویژگی مقدارهای رایج کاربرد
display: grid grid, inline-grid فعال کردن Grid
grid-template-columns 100px 1fr 2fr, repeat(3, 1fr) تعریف ستون‌ها
grid-template-rows auto 200px 1fr تعریف سطرها
gap 20px, 1rem فاصله بین سلول‌ها
grid-column 1 / 3, span 2 ادغام ستون‌ها
grid-row 1 / 4, span 3 ادغام سطرها
grid-template-areas "header header" "sidebar main" نام‌گذاری نواحی
minmax() minmax(200px, 1fr) محدوده اندازه
auto-fit / auto-fill repeat(auto-fit, 250px) تعداد خودکار ستون‌ها

۲۰+ مثال کاربردی CSS Grid (از پایه تا پیشرفته)

مثال ۱: ساده‌ترین Grid (۳ ستون مساوی)

یک گالری ساده با ۳ ستون مساوی و فاصله ۲۰ پیکسل.

css
.basic-grid {    display: grid;    grid-template-columns: 1fr 1fr 1fr;    gap: 20px;  }  .grid-item {    background: #3498db;    padding: 40px;    text-align: center;    color: white;    border-radius: 8px;  }
html
<div class="basic-grid">    <div class="grid-item">۱</div>    <div class="grid-item">۲</div>    <div class="grid-item">۳</div>    <div class="grid-item">۴</div>    <div class="grid-item">۵</div>    <div class="grid-item">۶</div>  </div>

مثال ۲: ستون‌های با اندازه متفاوت (fr در مقابل px)

ترکیب واحدهای مختلف: ۲۰۰ پیکسل، سپس ۲ برابر فضای باقی‌مانده، سپس ۱ برابر.

css
.unequal-grid {    display: grid;    grid-template-columns: 200px 2fr 1fr;    gap: 15px;    height: 200px;  }

مثال ۳: استفاده از repeat() برای تکرار

معادل 1fr 1fr 1fr 1fr را با repeat(4, 1fr) بنویسید.

css
.repeat-grid {    display: grid;    grid-template-columns: repeat(4, 1fr);    gap: 15px;  }

مثال ۴: ادغام سلول‌ها با grid-column و grid-row

یک المان بزرگ که چندین ستون و سطر را اشغال می‌کند.

css
.merged-grid {    display: grid;    grid-template-columns: repeat(3, 1fr);    grid-template-rows: repeat(3, 100px);    gap: 10px;  }  .item-large {    grid-column: 1 / 3;  /* از ستون ۱ تا ۳ (یعنی ۲ ستون) */    grid-row: 1 / 3;      /* از سطر ۱ تا ۳ (یعنی ۲ سطر) */    background: #e74c3c;  }  .item-normal {    background: #3498db;  }
html
<div class="merged-grid">    <div class="item-large">بزرگ</div>    <div class="item-normal">۲</div>    <div class="item-normal">۳</div>    <div class="item-normal">۴</div>    <div class="item-normal">۵</div>    <div class="item-normal">۶</div>  </div>

مثال ۵: grid-template-areas (نام‌گذاری نواحی) – چیدمان صفحه کلاسیک

معروف‌ترین کاربرد Grid: ساخت هدر، سایدبار، محتوا و فوتر.

css
.page-layout {    display: grid;    grid-template-areas:      "header header header"      "sidebar main main"      "sidebar main main"      "footer footer footer";    grid-template-columns: 250px 1fr 1fr;    grid-template-rows: auto 1fr 1fr auto;    gap: 15px;    min-height: 100vh;  }  .header {    grid-area: header;    background: #2c3e50;    padding: 20px;    color: white;  }  .sidebar {    grid-area: sidebar;    background: #e67e22;    padding: 20px;  }  .main {    grid-area: main;    background: #ecf0f1;    padding: 20px;  }  .footer {    grid-area: footer;    background: #34495e;    padding: 20px;    color: white;  }

مثال ۶: چیدمان مجله‌ای (Magazine Layout)

یک چیدمان جذاب شبیه مجله‌های آنلاین با نواحی نامنظم.

css
.magazine {    display: grid;    grid-template-areas:      "featured featured news"      "featured featured article1"      "card1 card2 card3";    grid-template-columns: 2fr 1fr 1fr;    gap: 20px;  }  .featured {    grid-area: featured;    background: linear-gradient(135deg, #667eea, #764ba2);    padding: 50px;    color: white;    border-radius: 15px;  }  .news {    grid-area: news;    background: #f39c12;    padding: 20px;    border-radius: 15px;  }  .article1 {    grid-area: article1;    background: #3498db;    padding: 20px;    border-radius: 15px;  }  .card1 { grid-area: card1; background: #e74c3c; padding: 30px; border-radius: 15px; }  .card2 { grid-area: card2; background: #2ecc71; padding: 30px; border-radius: 15px; }  .card3 { grid-area: card3; background: #9b59b6; padding: 30px; border-radius: 15px; }

مثال ۷: Grid ریسپانسیو با auto-fit و minmax (مهم!)

بدون Media Queries، تعداد ستون‌ها بر اساس عرض صفحه تنظیم می‌شود.

css
.responsive-grid {    display: grid;    grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));    gap: 20px;  }  .responsive-item {    background: #3498db;    padding: 40px;    text-align: center;    border-radius: 10px;  }

توضیح: تا جایی که جا دارد ستون‌های ۲۵۰ پیکسلی قرار می‌دهد، و اگر فضا بیشتر بود، ستون‌ها کشیده می‌شوند.

مثال ۸: فرق auto-fit و auto-fill

auto-fit ستون‌های خالی را حذف می‌کند، auto-fill آنها را حفظ می‌کند.

css
.auto-fit {    display: grid;    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));  }  .auto-fill {    display: grid;    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));  }

مثال ۹: داشبورد مدیریتی پیشرفته

یک داشبورد کامل با کارت‌های آمار، نمودار و جدول.

css
.dashboard {    display: grid;    grid-template-areas:      "sidebar header header"      "sidebar stats stats"      "sidebar chart table"      "sidebar recent recent";    grid-template-columns: 260px 1fr 1fr;    grid-template-rows: auto auto 1fr auto;    gap: 20px;    min-height: 100vh;    background: #f5f6fa;  }  .sidebar { grid-area: sidebar; background: #2c3e50; }  .header { grid-area: header; background: white; padding: 20px; border-radius: 10px; }  .stats { grid-area: stats; display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; }  .chart { grid-area: chart; background: white; border-radius: 10px; padding: 20px; }  .table { grid-area: table; background: white; border-radius: 10px; padding: 20px; }  .recent { grid-area: recent; background: white; border-radius: 10px; padding: 20px; }

مثال ۱۰: گالری تصاویر با ارتفاع خودکار (Masonry-style)

ایجاد گالری شبیه Pinterest بدون جاوااسکریپت.

css
.masonry-gallery {    display: grid;    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));    gap: 20px;  }  .masonry-item {    background: #ecf0f1;    border-radius: 15px;    overflow: hidden;  }  .masonry-item img {    width: 100%;    height: auto;    display: block;  }  .masonry-item:nth-child(odd) {    transform: translateY(-10px);  }

مثال ۱۱: چیدمان فرم چندستونی

یک فرم ثبت‌نام با ورودی‌های مرتب در چند ستون.

css
.form-grid {    display: grid;    grid-template-columns: repeat(2, 1fr);    gap: 20px;  }  .form-full {    grid-column: 1 / -1; /* تمام عرض را بگیر */  }  .form-grid input, .form-grid select {    padding: 12px;    border: 1px solid #ddd;    border-radius: 8px;  }
html
<div class="form-grid">    <input type="text" placeholder="نام">    <input type="text" placeholder="نام خانوادگی">    <input type="email" placeholder="ایمیل" class="form-full">    <input type="password" placeholder="رمز عبور" class="form-full">    <button class="form-full">ثبت نام</button>  </div>

مثال ۱۲: چیدمان هرمی (Pyramid Layout)

یک چیدمان خلاقانه با سلول‌های نامنظم.

css
.pyramid {    display: grid;    grid-template-columns: 1fr 2fr 1fr;    gap: 10px;  }  .pyramid-item {    background: #e67e22;    padding: 30px;    text-align: center;  }  .pyramid-item:first-child {    grid-column: 2 / 3;  }  .pyramid-item:nth-child(2), .pyramid-item:nth-child(3) {    grid-column: span 1;  }  .pyramid-item:last-child {    grid-column: 1 / -1;  }

مثال ۱۳: هدر چسبنده با Grid (Sticky Header)

ساخت یک هدر که هنگام اسکرول بالای صفحه بماند.

css
.sticky-grid {    display: grid;    grid-template-rows: auto 1fr auto;    min-height: 100vh;  }  .sticky-header {    position: sticky;    top: 0;    background: #2c3e50;    padding: 20px;    color: white;    z-index: 100;  }  .main-content {    background: #ecf0f1;    padding: 40px;  }  .sticky-footer {    background: #34495e;    padding: 20px;    color: white;  }

مثال ۱۴: همپوشانی المان‌ها با Grid (مثل position absolute)

قرار دادن یک متن روی تصویر بدون نیاز به position.

css
.overlay-grid {    display: grid;    grid-template-columns: 1fr;    grid-template-rows: 1fr;  }  .overlay-grid img {    grid-column: 1 / 2;    grid-row: 1 / 2;    width: 100%;    height: 400px;    object-fit: cover;  }  .overlay-text {    grid-column: 1 / 2;    grid-row: 1 / 2;    z-index: 1;    background: rgba(0,0,0,0.5);    color: white;    display: flex;    align-items: center;    justify-content: center;    font-size: 2rem;  }

مثال ۱۵: منوی کشویی سمت راست (Off-canvas menu)

یک چیدمان که منو در کنار صفحه پنهان می‌شود.

css
.offcanvas {    display: grid;    grid-template-columns: 0fr 1fr;    transition: 0.3s;  }  .offcanvas.open {    grid-template-columns: 250px 1fr;  }  .menu {    overflow: hidden;    background: #2c3e50;    color: white;    padding: 20px;  }  .content {    background: #ecf0f1;    padding: 20px;    min-height: 100vh;  }

مثال ۱۶: جدول مقایسه محصولات با Grid

یک جدول مقایسه زیبا برای فروشگاه‌ها.

css
.comparison-grid {    display: grid;    grid-template-columns: 200px repeat(3, 1fr);    gap: 1px;    background: #ddd;  }  .comparison-item {    background: white;    padding: 15px;    text-align: center;  }  .comparison-item:first-child {    background: #f8f9fa;    font-weight: bold;  }

مثال ۱۷: چیدمان تایم‌لاین (Timeline)

یک تایم‌لاین عمودی با تاریخ و رویدادها.

css
.timeline {    display: grid;    grid-template-columns: 100px 1fr;    gap: 20px;  }  .timeline-date {    background: #3498db;    color: white;    padding: 10px;    border-radius: 8px;    text-align: center;    font-weight: bold;  }  .timeline-event {    background: #ecf0f1;    padding: 15px;    border-radius: 8px;    margin-bottom: 15px;  }

مثال ۱۸: چیدمان کارت‌های خبری با تصویر و متن

هر کارت شامل تصویر (چپ) و متن (راست).

css
.news-card {    display: grid;    grid-template-columns: 120px 1fr;    gap: 15px;    background: white;    padding: 15px;    border-radius: 10px;    box-shadow: 0 2px 10px rgba(0,0,0,0.1);  }  .news-image {    background: #3498db;    height: 80px;    border-radius: 8px;  }  .news-title {    font-weight: bold;    margin-bottom: 8px;  }  .news-summary {    color: #666;    font-size: 0.9rem;  }

مثال ۱۹: Grid تو در تو (Nested Grid)

ترکیب Grid داخل Grid برای چیدمان‌های پیچیده.

css
.outer-grid {    display: grid;    grid-template-columns: repeat(2, 1fr);    gap: 30px;  }  .inner-grid {    display: grid;    grid-template-columns: repeat(2, 1fr);    gap: 15px;    background: #ecf0f1;    padding: 20px;    border-radius: 10px;  }

مثال ۲۰: چیدمان پشت سر هم (Zigzag Layout)

یک چیدمان جذاب برای وبلاگ‌ها.

css
.zigzag {    display: grid;    gap: 30px;  }  .zigzag-item {    display: grid;    grid-template-columns: 1fr 1fr;    gap: 20px;    align-items: center;  }  .zigzag-item:nth-child(even) .zigzag-text {    order: 2;  }  .zigzag-item:nth-child(even) .zigzag-image {    order: 1;  }  .zigzag-image {    background: #3498db;    height: 200px;    border-radius: 15px;  }  .zigzag-text {    padding: 20px;  }

مثال ۲۱: چیدمان هدر و فوتر با ارتفاع ثابت و محتوای متغیر (مهم!)

ساخت صفحاتی که محتوا در وسط کشیده می‌شود.

css
.sticky-footer-layout {    display: grid;    grid-template-rows: auto 1fr auto;    min-height: 100vh;  }  header {    background: #2c3e50;    padding: 20px;    color: white;  }  main {    background: #ecf0f1;    padding: 40px;  }  footer {    background: #34495e;    padding: 20px;    color: white;  }

11. ویژگی‌ها و بخش‌های مختلف

  • ✅ ۲۱ مثال کامل از ساده تا پیشرفته

  • ✅ پوشش تمام مفاهیم کلیدی: template areas، auto-fit، minmax، ادغام سلول‌ها

  • ✅ چیدمان‌های واقعی: داشبورد، مجله، فرم، گالری، تایم‌لاین، جدول مقایسه

  • ✅ کدهای آماده و قابل کپی برای هر مثال

  • ✅ بدون نیاز به Media Queries در بسیاری از موارد (با auto-fit)

  • ✅ مناسب برای پروژه‌های حرفه‌ای

  • ✅ جدول مرجع سریع در ابتدا

جدول مرجع پیشرفته Grid:

تکنیک کد کاربرد
ستون‌های ریسپانسیو repeat(auto-fit, minmax(250px, 1fr)) گالری خودکار
نام‌گذاری نواحی grid-template-areas چیدمان خوانا
ادغام سلول‌ها grid-column: 1 / 3 المان بزرگ
محدوده اندازه minmax(200px, 1fr) جلوگیری از خرد شدن
کل عرض را بگیر grid-column: 1 / -1 فرم تمام عرض
همپوشانی grid-column: 1 / 2 (تکرار) متن روی تصویر


۱۴. بخش تمرین عملی (چالش نهایی)

💡 چالش نهایی (پروژه محور):
با استفاده از CSS Grid، یک صفحه شخصی (پورتفولیو) کامل طراحی کنید که شامل:

  1. هدر با نام و شغل (grid-template-areas)

  2. سایدبار شامل مهارت‌ها و اطلاعات تماس

  3. بخش اصلی شامل ۶ پروژه در قالب گالری ریسپانسیو (auto-fit)

  4. بخش پایین شامل ۳ دلیل برای همکاری (کارت‌های مساوی)

  5. فوتر با لینک‌های شبکه‌های اجتماعی

کدهای خود را در بخش نظرات به اشتراک بگذارید. بهترین طرح‌ها را در مقاله بعدی معرفی می‌کنیم.


کلمات کلیدی:

CSS Grid پیشرفته,آموزش Grid,چیدمان با Grid,grid template areas,auto-fit minmax,responsive grid,چیدمان مجله‌ای,داشبورد با Grid

اشتراک گذاری:
امتیاز دهید:
(0.0 از 0 رای)
مطالب مشابه

نظرات (0)

هنوز نظری ثبت نشده است. شما اولین نفر باشید!
لطفا نام خود را وارد کنید (حداقل ۲ کاراکتر)
لطفا ایمیل معتبر وارد کنید
حداقل ۱۰ و حداکثر ۲۰۰۰ کاراکتر. نظرات پس از تایید نمایش داده می‌شوند.
نظر باید حداقل ۱۰ کاراکتر باشد
امتیاز: (اختیاری)
نظرات پس از تایید نمایش داده می‌شوند

پرسش و پاسخ

حداقل ۱۰ و حداکثر ۱۰۰۰ کاراکتر. سوالات پس از بررسی منتشر می‌شوند.
لطفا سوال معتبری وارد کنید (حداقل ۱۰ کاراکتر)
لطفا نام معتبر وارد کنید
لطفا ایمیل معتبر وارد کنید
عدد ۵ رقمی نمایش داده شده را وارد کنید
لطفا کد امنیتی را وارد کنید
سوالات پس از تایید نمایش داده می‌شوند
هنوز پرسشی ثبت نشده است.