آموزش کامل 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 همه آیتمها کنار هم قرار میگیرند.
.container { display: flex; } .item { background: #3498db; padding: 20px; color: white; }
<div class="container"> <div class="item">آیتم ۱</div> <div class="item">آیتم ۲</div> <div class="item">آیتم ۳</div> </div>
مثال ۲: توزیع مساوی فاصله بین آیتمها (space-between)
اولین آیتم کاملاً چپ، آخرین آیتم کاملاً راست، بقیه با فاصله مساوی.
.navbar { display: flex; justify-content: space-between; background: #2c3e50; padding: 15px; color: white; }
<div class="navbar"> <div>🏠 خانه</div> <div>📦 محصولات</div> <div>👤 پروفایل</div> </div>
مثال ۳: وسطچین کردن یک المان (کلاسیک)
یکی از رایجترین کاربردها. یک جعبه را دقیقاً وسط صفحه قرار دهید.
.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; }
مثال ۴: منوی افقی کامل با زیرمنو
یک منوی حرفهای با آیتمهای مختلف.
.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 (حالت پیشفرض) ارتفاع همه کارتها با بلندترین کارت برابر میشود.
.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; /* همه کارتها عرض یکسان میگیرند */ }
مثال ۶: هدر سایت با لوگو، منو و دکمه ورود
یک هدر کامل حرفهای با سه بخش مجزا.
.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; }
مثال ۷: فوتر با ستونهای مختلف
یک فوتر مدرن با چندین بخش کنار هم.
.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; }
مثال ۸: نوار وضعیت (مثل یوتیوب)
یک نوار با آیتم چپ، وسط و راست.
.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)
آیتمها به صورت عمودی زیر هم قرار میگیرند.
.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)
آیتمها از راست به چپ چیده میشوند (مخصوص زبانهای راستنویس).
.reverse-container { display: flex; flex-direction: row-reverse; gap: 10px; background: #ecf0f1; padding: 20px; }
مثال ۱۱: استفاده از flex-grow برای پر کردن فضای خالی
آیتم سوم تمام فضای اضافی را میگیرد.
.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 (منوی ریسپانسیو)
در صفحههای کوچک، آیتمها به خط بعدی میروند.
.wrap-menu { display: flex; flex-wrap: wrap; gap: 15px; background: #e67e22; padding: 20px; } .wrap-menu a { background: white; padding: 10px 20px; border-radius: 20px; }
مثال ۱۳: مرکزچین کردن عمودی و افقی (مطلق)
بهترین روش برای وسطچین کردن یک المان.
.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
یک فرم زیبا با ورودیها و دکمه.
.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 یک گالری ریسپانسیو بسازید.
.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، ترتیب نمایش آیتمها را عوض کنید.
.order-container { display: flex; gap: 10px; } .item1 { order: 3; background: #e74c3c; } .item2 { order: 1; background: #3498db; } .item3 { order: 2; background: #2ecc71; }
مثال ۱۷: تنظیم جداگانه یک آیتم با align-self
یک آیتم را متفاوت از بقیه قرار دهید.
.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 را ببینید.
.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 یک نوار پیشرفت ساده بسازید.
.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 برای ساخت کامپوننتهای پیچیده.
.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، یک صفحه محصول کامل طراحی کنید که شامل:
هدر با لوگو، منو و دکمه سبد خرید
بخش محصولات شامل ۴ کارت (عکس، عنوان، قیمت، دکمه خرید) با چیدمان ریسپانسیو
فوتر با ۳ ستون (درباره ما، لینکهای سریع، شبکههای اجتماعی)
کدهای خود را در بخش کامنتها به اشتراک بگذارید تا بررسی کنیم.
کلمات کلیدی:
آموزش Flexbox,Flexbox کامل,۲۰ مثال Flexbox,چیدمان با Flexbox,display flex,justify-content,align-items,flex-direction,responsive design با Flexbox
نظرات (0)