مقالات آموزشی

آموزش Flexbox در CSS: راهنمای کامل برای طراحان وب ۲۰۲۵

ساخت navbar با Flexbox - طاووس وب

Flexbox یکی از قدرتمندترین ابزارهای CSS برای ساخت چیدمان‌های ریسپانسیو و انعطاف‌پذیر هست. در این آموزش کامل، از صفر تا صد Flexbox رو با مثال‌های عملی یاد می‌گیرید.

Flexbox چیست؟

Flexbox یا Flexible Box Layout یه مدل چیدمان CSS هست که به شما اجازه می‌ده المان‌ها رو به صورت ریسپانسیو و انعطاف‌پذیر در یه محور (row یا column) چیدمان کنید. این روش جایگزین روش‌های قدیمی مثل float و table شده.

مزایای Flexbox

  • چیدمان ریسپانسیو بدون نیاز به media query
  • ترازبندی افقی و عمودی آسان
  • توزیع فضا بین المان‌ها به صورت خودکار
  • تغییر ترتیب المان‌ها بدون تغییر HTML
  • سازگاری کامل با همه مرورگرها

 محور اصلی و متقاطع در Flexbox طاووس وب

مفاهیم پایه Flexbox

Flex Container و Flex Items

برای استفاده از Flexbox، باید یه المان والد رو به flex container تبدیل کنید:

.container {
  display: flex;
}

المان‌های فرزند این container به طور خودکار flex items می‌شن.

محور اصلی (Main Axis) و محور متقاطع (Cross Axis)

Flexbox در دو محور کار می‌کنه:

  • Main Axis: محور اصلی چیدمان (افقی یا عمودی)
  • Cross Axis: محور متقاطع که عمود بر محور اصلی هست

ویژگی‌های Flex Container

۱. flex-direction

جهت چیدمان المان‌ها رو تعیین می‌کنه:

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

۲. justify-content

ترازبندی المان‌ها در محور اصلی:

.container {
  justify-content: flex-start;     /* شروع */
  justify-content: flex-end;       /* پایان */
  justify-content: center;         /* وسط */
  justify-content: space-between;  /* فاصل مساوی بین المان‌ها */
  justify-content: space-around;   /* فاصل مساوی دور المان‌ها */
  justify-content: space-evenly;   /* فاصل کاملا مساوی */
}

۳. align-items

ترازبندی المان‌ها در محور متقاطع:

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

۴. flex-wrap

تعیین می‌کنه آیا المان‌ها در یه خط بمانند یا به خط بعدی بروند:

.container {
  flex-wrap: nowrap;       /* یه خط (پیش‌فرض) */
  flex-wrap: wrap;         /* شکست خط */
  flex-wrap: wrap-reverse; /* شکست خط معکوس */
}

۵. gap

فاصله بین المان‌های flex:

.container {
  gap: 20px;              /* فاصله افقی و عمودی */
  row-gap: 15px;          /* فاصله بین ردیف‌ها */
  column-gap: 25px;       /* فاصله بین ستون‌ها */
}

آموزش Flexbox در CSS - طاووس وب

ویژگی‌های Flex Items

۱. flex-grow

نسبت رشد یه المان نسبت به بقیه:

.item {
  flex-grow: 1;  /* المان فضا رو پر می‌کنه */
  flex-grow: 2;  /* دو برابر بقیه رشد می‌کنه */
}

۲. flex-shrink

نسبت جمع‌شدن یه المان وقتی فضا کم باشه:

.item {
  flex-shrink: 0;  /* جمع نمی‌شه */
  flex-shrink: 1;  /* جمع می‌شه (پیش‌فرض) */
}

۳. flex-basis

اندازه اولیه یه المان:

.item {
  flex-basis: 200px;   /* عرض اولیه ۲۰۰ پیکسل */
  flex-basis: auto;    /* بر اساس محتوا */
  flex-basis: 50%;     /* ۵۰ درصد	container */
}

۴. shorthand: flex

.item {
  flex: 1 0 200px;  /* grow | shrink | basis */
}

۵. align-self

ترازبندی یه المان خاص که از container رو نقض می‌کنه:

.item {
  align-self: center;  /* فقط این المان وسط چین */
}

مثال عملی: Navbar ریسپانسیو

 


 

مثال: کارت‌های ریسپانسیو با flex-wrap

.card-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 20px;
  justify-content: center;
}
.card {
  flex: 1 1 300px;
  max-width: 350px;
  padding: 20px;
  border-radius: 12px;
  box-shadow: 0 2px 10px rgba(0,0,0,0.1);
}

Flexbox در برابر Grid

ویژگی Flexbox Grid
محور یک‌بعدی (row یا column) دو‌بعدی (row و column)
کاربرد چیدمان خطی، navbar، منو چیدمان صفحه، grid کامل
انعطاف بالا ساختارمند

سوالات متداول

۱. Flexbox بهتره یا Grid؟

بستگی به نیاز داره. برای چیدمان‌های یک‌بعدی مثل navbar و منو، Flexbox بهتره. برای چیدمان‌های دو‌بعدی مثل layout کل صفحه، Grid مناسب‌تره.

۲. آیا Flexbox در همه مرورگرها کار می‌کنه؟

بله، Flexbox در تمام مرورگرهای مدرن پشتیبانی می‌شه. حتی IE11 هم پشتیبانی محدود داره.

۳. چطور با Flexbox وسط‌چین کنم؟

کافیه از display: flex; justify-content: center; align-items: center; روی container استفاده کنید.

جمع‌بندی

Flexbox یه ابزار قدرتمند برای چیدمان ریسپانسیو در CSS هست که طراحی رو ساده می‌کنه. برای یادگیری بیشتر Container Queries و طراحی ریسپانسیو رو هم بخونید.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *