دسترسی سریع


آموزش کامل Flexbox از صفر تا صد | ۲۰ مثال عملی + کدهای آماده

آموزش کامل Flexbox از صفر تا صد | ۲۰ مثال عملی + کدهای آماده
خلاصه مطلب

در این مقاله جامع، تمام ویژگی‌های Flexbox را از پایه تا پیشرفته یاد می‌گیرید. ۲۰ مثال واقعی شامل ساخت منوی حرفه‌ای، کارت‌های خبری، فوتر، نوار وضعیت، مرکزچین کردن المان‌ها، فرم‌های مدرن و ... همراه با کدهای آماده و توضیحات کامل. مناسب برای تمام سطوح.

مقدمه: Flexbox چیست و چرا باید یاد بگیریم؟

Flexbox یا Flexible Box Layout ماژولی در CSS مدرن است که برای چیدمان المان‌ها در یک جهت (ردیف یا ستون) طراحی شده. قبل از Flexbox، مجبور بودیم از Float، Display: inline-block، Position و ترفندهای کثیف استفاده کنیم. Flexbox همه این مشکلات را حل کرده است.

مزایای اصلی Flexbox:

  • دیگر نیازی به Float و Clearfix نیست

  • به راحتی می‌توانید المان‌ها را در وسط صفحه قرار دهید

  • فاصله‌گذاری بین المان‌ها بسیار ساده است

  • ترتیب المان‌ها را بدون تغییر HTML می‌توانید عوض کنید

  • کاملاً ریسپانسیو و قابل ترکیب با Media Queries


ویژگی‌های اصلی Flexbox (خلاصه قبل از مثال‌ها)

ویژگی مقدارهای رایج کاربرد
display flex, inline-flex فعال کردن Flexbox
flex-direction row, column, row-reverse, column-reverse جهت چیدمان
justify-content flex-start, flex-end, center, space-between, space-around, space-evenly چیدمان در امتداد خط اصلی
align-items stretch, flex-start, flex-end, center, baseline چیدمان در امتداد خط عرضی
flex-wrap nowrap, wrap, wrap-reverse کنترل شکستن خطوط
gap 10px, 1rem فاصله بین آیتم‌ها
flex-grow عدد (مثل 1، 2) رشد کردن آیتم
flex-shrink عدد (مثل 0، 1) جمع شدن آیتم
flex-basis auto, 100px, 50% اندازه پایه
align-self مقادیر align-items تنظیم جداگانه یک آیتم
order عدد (مثل 1، 2-) ترتیب نمایش

۲۰ مثال کاربردی Flexbox (از ساده تا پیشرفته)

مثال ۱: فعال کردن ساده Flexbox

ساده‌ترین حالت. فقط با display: flex همه آیتم‌ها کنار هم قرار می‌گیرند.

css
.container {    display: flex;  }  .item {    background: #3498db;    padding: 20px;    color: white;  }
html
<div class="container">    <div class="item">آیتم ۱</div>    <div class="item">آیتم ۲</div>    <div class="item">آیتم ۳</div>  </div>

مثال ۲: توزیع مساوی فاصله بین آیتم‌ها (space-between)

اولین آیتم کاملاً چپ، آخرین آیتم کاملاً راست، بقیه با فاصله مساوی.

css
.navbar {    display: flex;    justify-content: space-between;    background: #2c3e50;    padding: 15px;    color: white;  }
html
<div class="navbar">    <div>🏠 خانه</div>    <div>📦 محصولات</div>    <div>👤 پروفایل</div>  </div>

مثال ۳: وسط‌چین کردن یک المان (کلاسیک)

یکی از رایج‌ترین کاربردها. یک جعبه را دقیقاً وسط صفحه قرار دهید.

css
.center-container {    display: flex;    justify-content: center;    align-items: center;    height: 300px;    background: #ecf0f1;  }  .center-box {    background: #e74c3c;    padding: 40px;    border-radius: 10px;    color: white;  }

مثال ۴: منوی افقی کامل با زیرمنو

یک منوی حرفه‌ای با آیتم‌های مختلف.

css
.horizontal-menu {    display: flex;    justify-content: center;    gap: 30px;    background: #34495e;    padding: 15px;  }  .horizontal-menu a {    color: white;    text-decoration: none;    padding: 8px 16px;    transition: 0.3s;  }  .horizontal-menu a:hover {    background: #e74c3c;    border-radius: 5px;  }

مثال ۵: سه کارت کنار هم با ارتفاع مساوی

با align-items: stretch (حالت پیش‌فرض) ارتفاع همه کارت‌ها با بلندترین کارت برابر می‌شود.

css
.cards {    display: flex;    gap: 20px;  }  .card {    background: white;    padding: 20px;    border-radius: 10px;    box-shadow: 0 2px 10px rgba(0,0,0,0.1);    flex: 1; /* همه کارت‌ها عرض یکسان می‌گیرند */  }

مثال ۶: هدر سایت با لوگو، منو و دکمه ورود

یک هدر کامل حرفه‌ای با سه بخش مجزا.

css
.site-header {    display: flex;    justify-content: space-between;    align-items: center;    background: #1a1a2e;    padding: 15px 30px;    color: white;  }  .logo {    font-size: 24px;    font-weight: bold;  }  .nav-links {    display: flex;    gap: 25px;  }  .login-btn {    background: #e94560;    padding: 8px 20px;    border-radius: 5px;  }

مثال ۷: فوتر با ستون‌های مختلف

یک فوتر مدرن با چندین بخش کنار هم.

css
.footer {    display: flex;    justify-content: space-between;    flex-wrap: wrap;    gap: 30px;    background: #2c3e50;    padding: 40px;    color: white;  }  .footer-column {    flex: 1;    min-width: 150px;  }

مثال ۸: نوار وضعیت (مثل یوتیوب)

یک نوار با آیتم چپ، وسط و راست.

css
.status-bar {    display: flex;    justify-content: space-between;    align-items: center;    background: #f39c12;    padding: 10px 20px;    border-radius: 8px;  }  .left-icon, .right-icon {    font-size: 20px;  }  .center-text {    font-weight: bold;  }

مثال ۹: چیدمان ستونی (flex-direction: column)

آیتم‌ها به صورت عمودی زیر هم قرار می‌گیرند.

css
.vertical-menu {    display: flex;    flex-direction: column;    gap: 10px;    width: 200px;  }  .vertical-menu a {    background: #3498db;    padding: 12px;    color: white;    text-decoration: none;    text-align: center;    border-radius: 5px;  }

مثال ۱۰: معکوس کردن ترتیب (row-reverse)

آیتم‌ها از راست به چپ چیده می‌شوند (مخصوص زبان‌های راست‌نویس).

css
.reverse-container {    display: flex;    flex-direction: row-reverse;    gap: 10px;    background: #ecf0f1;    padding: 20px;  }

مثال ۱۱: استفاده از flex-grow برای پر کردن فضای خالی

آیتم سوم تمام فضای اضافی را می‌گیرد.

css
.grow-example {    display: flex;    gap: 10px;  }  .grow-item {    background: #9b59b6;    padding: 15px;  }  .grow-item:first-child {    flex-grow: 1; /* این آیتم رشد می‌کند */  }  .grow-item:last-child {    flex-grow: 2; /* این آیتم دو برابر رشد می‌کند */  }

مثال ۱۲: لاین‌شکنی با flex-wrap (منوی ریسپانسیو)

در صفحه‌های کوچک، آیتم‌ها به خط بعدی می‌روند.

css
.wrap-menu {    display: flex;    flex-wrap: wrap;    gap: 15px;    background: #e67e22;    padding: 20px;  }  .wrap-menu a {    background: white;    padding: 10px 20px;    border-radius: 20px;  }

مثال ۱۳: مرکزچین کردن عمودی و افقی (مطلق)

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

css
.absolute-center {    display: flex;    justify-content: center;    align-items: center;    height: 400px;    background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);  }  .center-content {    background: white;    padding: 40px;    border-radius: 20px;    text-align: center;  }

مثال ۱۴: فرم ورود مدرن با Flexbox

یک فرم زیبا با ورودی‌ها و دکمه.

css
.login-form {    display: flex;    flex-direction: column;    gap: 15px;    max-width: 300px;    margin: auto;    padding: 30px;    background: #f8f9fa;    border-radius: 10px;  }  .login-form input {    padding: 12px;    border: 1px solid #ddd;    border-radius: 5px;  }  .login-form button {    background: #28a745;    color: white;    padding: 12px;    border: none;    border-radius: 5px;    cursor: pointer;  }

مثال ۱۵: گالری تصاویر با چیدمان خودکار

با flex-wrap و flex-grow یک گالری ریسپانسیو بسازید.

css
.gallery {    display: flex;    flex-wrap: wrap;    gap: 15px;  }  .gallery img {    flex: 1 1 200px; /* رشد: 1، جمع شدن: 1، اندازه پایه: 200px */    height: 150px;    object-fit: cover;    border-radius: 10px;  }

مثال ۱۶: ترتیب متفاوت با order

بدون تغییر HTML، ترتیب نمایش آیتم‌ها را عوض کنید.

css
.order-container {    display: flex;    gap: 10px;  }  .item1 { order: 3; background: #e74c3c; }  .item2 { order: 1; background: #3498db; }  .item3 { order: 2; background: #2ecc71; }

مثال ۱۷: تنظیم جداگانه یک آیتم با align-self

یک آیتم را متفاوت از بقیه قرار دهید.

css
.self-container {    display: flex;    align-items: flex-start;    gap: 10px;    height: 200px;    background: #ecf0f1;  }  .self-item {    background: #9b59b6;    padding: 20px;  }  .special {    align-self: flex-end;    background: #e74c3c;  }

مثال ۱۸: فضای مساوی بین و اطراف (space-evenly vs space-around)

تفاوت بین space-evenly و space-around را ببینید.

css
.space-evenly {    display: flex;    justify-content: space-evenly;    background: #f1c40f;    padding: 20px;  }  .space-around {    display: flex;    justify-content: space-around;    background: #e67e22;    padding: 20px;  }

مثال ۱۹: نوار پیشرفت چند قسمتی

با Flexbox یک نوار پیشرفت ساده بسازید.

css
.progress-bar {    display: flex;    height: 30px;    border-radius: 15px;    overflow: hidden;  }  .progress-step1 { background: #e74c3c; flex: 1; }  .progress-step2 { background: #f39c12; flex: 2; }  .progress-step3 { background: #2ecc71; flex: 1; }

مثال ۲۰: چیدمان پیچیده تو در تو (Flexbox داخل Flexbox)

ترکیب Flexbox برای ساخت کامپوننت‌های پیچیده.

css
.complex-card {    display: flex;    flex-direction: column;    gap: 15px;    border: 1px solid #ddd;    padding: 20px;    border-radius: 10px;  }  .card-header {    display: flex;    justify-content: space-between;    align-items: center;  }  .card-footer {    display: flex;    justify-content: flex-end;    gap: 10px;  }

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

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

  • ✅ جدول مرجع سریع تمام ویژگی‌های Flexbox

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

  • ✅ مناسب برای پروژه‌های واقعی (منو، کارت، فوتر، فرم، گالری)

  • ✅ پوشش تمامی مفاهیم: justify-content, align-items, flex-grow, order, wrap و...

  • ✅ طراحی ریسپانسیو با flex-wrap

  • ✅ تمرین عملی در انتها

جدول مرجع سریع Flexbox (Cheat Sheet):

خاصیت مقدارها توضیح
display: flex - فعال‌سازی
flex-direction row / column / row-reverse / column-reverse جهت اصلی
justify-content flex-start / center / space-between / space-around / space-evenly محور اصلی
align-items stretch / center / flex-start / flex-end / baseline محور عرضی
flex-wrap nowrap / wrap / wrap-reverse شکستن خط
gap هر مقدار طولی فاصله بین آیتم‌ها
flex: 1 عدد مخفف grow shrink basis

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

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

  1. هدر با لوگو، منو و دکمه سبد خرید

  2. بخش محصولات شامل ۴ کارت (عکس، عنوان، قیمت، دکمه خرید) با چیدمان ریسپانسیو

  3. فوتر با ۳ ستون (درباره ما، لینک‌های سریع، شبکه‌های اجتماعی)

کدهای خود را در بخش کامنت‌ها به اشتراک بگذارید تا بررسی کنیم.


کلمات کلیدی:

آموزش Flexbox,Flexbox کامل,۲۰ مثال Flexbox,چیدمان با Flexbox,display flex,justify-content,align-items,flex-direction,responsive design با Flexbox

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

نظرات (0)

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

پرسش و پاسخ

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