آموزش جامع Flexbox


🎯 اهداف یادگیری

  • درک مفاهیم اصلی Flexbox و کاربردهای آن
  • آشنایی با ویژگی‌های اصلی Flexbox
  • یادگیری ترازبندی و توزیع فضای عناصر
  • تسلط بر ایجاد چیدمان‌های واکنش‌گرا با Flexbox

📌 Flexbox چیست؟

Flexbox یک مدل چیدمان در CSS است که طراحی ساختارهای پیچیده را آسان می‌کند:

css
.container {
display: flex;
justify-content: center;
align-items: center;
}

مزایای Flexbox:

  • چیدمان آسان: ترازبندی و توزیع عناصر به سادگی انجام می‌شود
  • واکنش‌گرایی: انطباق خودکار با اندازه‌های مختلف صفحه
  • کاهش کدنویسی: حذف بسیاری از floatها و clearfixها

📌 مفاهیم اصلی Flexbox

Flexbox از دو عنصر اصلی تشکیل شده است:

css
/* Flex Container */
.flex-container {
display: flex;
}
/* Flex Items */
.flex-item {
flex: 1;
}

ویژگی‌های اصلی:

  • Flex Container: عنصر والد که ویژگی display: flex دارد
  • Flex Items: عناصر فرزند داخل کانتینر
  • Main Axis: محور اصلی (به صورت پیش‌فرض افقی)
  • Cross Axis: محور عمود بر محور اصلی

📌 ویژگی‌های Flex Container

۱. جهت چیدمان (flex-direction)

css
.container {
flex-direction: row; /* پیش‌فرض (افقی) */
flex-direction: column; /* عمودی */
flex-direction: row-reverse; /* افقی معکوس */
flex-direction: column-reverse; /* عمودی معکوس */
}

۲. ترازبندی محور اصلی (justify-content)

css
.container {
justify-content: flex-start; /* پیش‌فرض (شروع محور) */
justify-content: flex-end; /* پایان محور */
justify-content: center; /* وسط محور */
justify-content: space-between; /* فاصله مساوی بین آیتم‌ها */
justify-content: space-around; /* فاصله مساوی اطراف آیتم‌ها */
}

۳. ترازبندی محور فرعی (align-items)

css
.container {
align-items: stretch; /* پیش‌فرض (کشیده شدن) */
align-items: flex-start; /* شروع محور فرعی */
align-items: flex-end; /* پایان محور فرعی */
align-items: center; /* وسط محور فرعی */
align-items: baseline; /* تراز بر اساس خط پایه متن */
}

📌 ویژگی‌های Flex Items

۱. ترتیب نمایش (order)

css
.item {
order: 5; /* پیش‌فرض 0 - هرچه عدد بیشتر باشد، ترتیب نمایش بعد خواهد بود */
}

۲. رشد نسبی (flex-grow)

css
.item {
flex-grow: 1; /* پیش‌فرض 0 - نسبت فضای اضافی که آیتم باید اشغال کند */
}

۳. جمع‌بندی ویژگی‌ها (flex)

css
.item {
flex: 1; /* خلاصه‌نویسی برای flex-grow, flex-shrink و flex-basis */
}

📌 مثال‌های کاربردی

۱. منوی ناوبری

css
.navbar {
display: flex;
justify-content: space-between;
align-items: center;
}

۲. کارت محصول

css
.product-card {
display: flex;
flex-direction: column;
}
.card-footer {
display: flex;
justify-content: space-between;
}

📌 تمرین عملی

با استفاده از Flexbox، منوی زیر را طراحی کنید:

html
<!-- ساختار HTML -->
<nav class="navbar">
<div class="logo">لوگو</div>
<ul class="nav-links">
<li>صفحه اصلی</li>
<li>محصولات</li>
<li>تماس با ما</li>
</ul>
</nav>

راهنمای تمرین:

  1. منو باید به صورت افقی نمایش داده شود
  2. لوگو در سمت راست و لینک‌ها در سمت چپ قرار گیرند
  3. فاصله بین لینک‌ها باید یکسان باشد
  4. منو باید در وسط صفحه عمودی تراز شود

📌 نکات پیشرفته

برای مطالعه کامل فلکس باکس و همچنین آشنایی با مباحث پیشرفته فلکس باکس اینجا کلیک کنید

📌 قدم بعدی

در درس بعدی با برای چیدمان‌های مدرن آشنا خواهیم شد!