آموزش جامع Grid در Flexbox
🎯 اهداف یادگیری
- درک تفاوتهای بین Flexbox و Grid
- یادگیری نحوه ترکیب Grid و Flexbox
- تسلط بر ایجاد چیدمانهای پیچیده با Grid در Flexbox
- آشنایی با بهترین روشهای استفاده از این تکنیک
📌 Grid در Flexbox چیست؟
ترکیب Grid و Flexbox به شما امکان میدهد از مزایای هر دو سیستم چیدمان استفاده کنید:
css
.container { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px;}.item { display: flex; flex-direction: column; justify-content: center;}
مزایای ترکیب Grid و Flexbox:
- کنترل دو بعدی: Grid برای چیدمان کلی صفحه و Flexbox برای ترازبندی داخلی آیتمها
- انعطافپذیری: ترکیب قدرت هر دو سیستم برای چیدمانهای پیچیده
- واکنشگرایی: سهولت در ایجاد طرحبندیهای واکنشگرا
📌 چه زمانی از Grid در Flexbox استفاده کنیم؟
css
/* زمانی که نیاز به چیدمان دو بعدی دارید */.product-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));}/* و برای محتوای داخل هر محصول از Flexbox استفاده میکنیم */.product-card { display: flex; flex-direction: column;}
قوانین طلایی:
- برای لایهبندی اصلی از Grid استفاده کنید: ساختار کلی صفحه
- برای اجزای داخلی از Flexbox استفاده کنید: ترازبندی محتوا
- از تودرتو شدن بیش از حد بپرهیزید: عمق بیش از 3 سطح میتواند مشکلساز شود
📌 تفاوتهای کلیدی Grid و Flexbox
ویژگی | Flexbox | Grid |
---|---|---|
ابعاد | تک بعدی (ردیف یا ستون) | دو بعدی (ردیف و ستون همزمان) |
ترازبندی | عالی برای ترازبندی محتوا | مناسب برای ساختار کلی |
حالت پیشفرض | محتوای آیتمها اندازهها را تعیین میکند | میتوانید اندازههای دقیق تعریف کنید |
📌 مثالهای کاربردی
۱. ساخت کارد محصول با Grid و Flexbox
css
.products-container { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 30px;}.product-card { display: flex; flex-direction: column; justify-content: space-between;}
۲. ساخت داشبورد مدیریتی
css
.dashboard { display: grid; grid-template-columns: 250px 1fr; grid-template-rows: 80px 1fr; height: 100vh;}.widget { display: flex; align-items: center; justify-content: space-between;}
📌 تمرین عملی
با استفاده از Grid و Flexbox، ساختار زیر را پیادهسازی کنید:
html
<!-- ساختار HTML --><div class="dashboard"> <header>هدر</header> <aside>نوار کناری</aside> <main> <div class="widget">ویجت 1</div> <div class="widget">ویجت 2</div> </main></div>
راهنمای تمرین:
- از Grid برای ساختار کلی داشبورد استفاده کنید
- برای ویجتها از Flexbox استفاده کنید
- نوار کناری را با عرض ثابت 250px طراحی کنید
- هدر را در تمام عرض صفحه قرار دهید
📌 نکات پیشرفته
۱. استفاده از minmax برای واکنشگرایی
css
.responsive-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr));}
۲. ترتیب نمایش در Grid
css
.item { grid-column: 1 / span 2; /* دو ستون را اشغال میکند */ grid-row: 2; /* در ردیف دوم قرار میگیرد */ order: 1; /* ترتیب نمایش را تغییر میدهد */}
۳.gap در Flexbox
css
.flex-container { display: flex; justify-content: space-between; /* توزیع فضای بین آیتمها */ align-items: center; /* تراز عمودی */ gap: 20px; /* فاصله بین آیتمها */}
نکته کلیدی: برای طرحبندیهای پیچیده، ابتدا ساختار کلی را با Grid طراحی کنید، سپس جزئیات داخلی را با Flexbox پیادهسازی نمایید.
📌 قدم بعدی
در درس بعدی با انیمیشنهای CSS و ایجاد انتقالهای روان آشنا خواهیم شد!