خانه / توسعه‌ نرم‌افزار / FlexBox چیست؟ آشنایی با کاربردهای Flexible boxes

FlexBox چیست؟ آشنایی با کاربردهای Flexible boxes

FlexBox چیست؟ آشنایی با کاربردهای Flexible boxes

نویسنده:

زمان مطالعه 6 دقیقه

انتشار:

به‌روزرسانی:

تعداد نظرات: 0

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

Flexbox چیست؟

What Is Flexbox

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

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

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

وقتی با flexbox کار می‌کنید، با دو محور سروکار دارید: محور اصلی و محور متقاطع. ویژگی flex-direction محور اصلی را تعریف می‌کند و محور متقاطع هم به صورت عمودی اجرا می‌شود. مثلا، اگر عناصر به صورت سطری یا ردیفی کنار هم قرار بگیرند، محور اصلی افقی و محور متقاطع عمودی خواهد بود.

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

  • Row
  • Row-Reverse
  • Column
  • Column-Reverse

محور متقاطع یا Cross Axis هم به صورت عمودی روی محور اصلی و داخل فلکس کانتینر تعریف می‌شود. مشخصه این محور جهت آن است. اگر محور اصلی عمودی باشد، محور متقاطع به صورت افقی قرار می‌گیرد و با ویژگی Align-items کنترل می‌شود.

کانتینرها و اقلام در Flexbox

Containers-and-Items-in-Flexbox

در CSS Grid، عنصری به نام Container Flex وجود دارد. این عنصر به عنصرهای دیگر اجازه می‌دهد که به شکل واکنش‌گرا و راحت تنظیم شوند. شما می‌توانید با استفاده از ویژگی‌هایی مثل Display: Flex روی کانتینر، ترتیب، فضا و تراز عناصر را کنترل کنید.
به‌علاوه، اقلامی که در فلکس وجود دارند، داخل کانتینر فلکس هم هستند. برای اینکه بتوانید به شیوه‌ای مؤثر از ویژگی‌های فلکس‌باکس استفاده کنید، باید ویژگی‌ Display را طبق Flexbox روی عنصرها اعمال کنید و عنصر مورد نظر را به شکل Flex یا inline-flex تعریف کنید. در نتیجه، یک کانتینر واکنش‌گرا خواهید داشت که فرزندان و زیربخش‌های آن به عنصرها یا آیتم‌های موجود در فلکس تبدیل می‌شوند.

ویژگی‌های کانتینر فلکس باکس

با استفاده از کانتینر فلکس می‌توانید نحوه چیدمان عناصر را کنترل کنید و اقلام انعطاف‌پذیر را ترازبندی کنید. نکته مهم این است که ویژگی‌ها روی Container Flex اجرا می‌شوند. ویژگی‌های کلیدی Container Flex به شرح زیر هستند.

Flex-Direction این ویژگی جهت محور اصلی را مشخص می‌کند
Flex-Wrap طبق ویژگی فلکس رپ، اگر اقلام موجود در فلکس از عرض کانتینر بیشتر شود، باید آن‌ها را در چند خط پیچیده کنار هم بگذارید.
Flex-Flow این ویژگی ترکیبی از جهت فلکس و انعطاف‌پذیری است.
Justify-Content با استفاده از جاستیفای می‌توانید اقلام فلکس را در امتداد محور اصلی تراز کنید.
Align-item این ویژگی اقلام موجود در فلکس را در امتداد محور متقاطع تراز می‌کند.
Align-Content این ویژگی تراز خطوط فلکس را کنترل می‌کند.
Place-content ویژگی Place-Content ترکیبی از ویژگی‌های Align-content و Justify-content است.
ویژگی‌های کانتینر فلکس باکس

اقلام فلکس باکس چه ویژگی‌هایی دارند؟

ویژگی‌های زیر روی اقلام مختلف کانتینر فلکس اعمال می‌شوند.

Order ویژگی Order برای مرتب کردن اقلام فلکس و کنترل آن‌ها در کانتینر فلکس است.
Align-Self این ویژگی تراز تنظیم شده توسط کانتینر را لغو می‌کند.
Flex-grow با ویژگی Flex-grow می‌توانید توانایی رشد یک آیتم فلکس را تعیین کنید.
Flex-shrink این ویژگی توانایی کوچک‌ شدن یک آیتم فلکس را مشخص می‌کند.
Flex-Basis با ویژگی Flex-Basis می‌توانید اندازه اولیه یک آیتم فلکس را قبل از توزیع فضای موجود تنظیم کنید.
Flex این ویژگی ترکیبی از Flex-Shrink, Flex-Grow و Flex-Basis است.
ویژگی‌های اقلام فلکس باکس

ویژگی Order در عناصر Flexbox

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

ویژگی Flex-Grow و Flex-Shrink

این دو ویژگی، میزان انبساط و انقباض آیتم‌های فلکس را مشخص می‌کنند. مقادیر ویژگی‌های Flex-Grow و Flex-Shrink عددی بین صفر تا هر عدد مثبت است. مثلا اگر، مقدار Flex-Grow برای همه آیتم‌های فلکس برابر با ۱ باشد، فضای باقی‌مانده به طور مساوی بین آن‌ها تقسیم می‌شود. مقدار صفر هم نشان می‌دهد که آن ویژگی غیرفعال است.

کاربرد Flexbox

Applications-of-Flexbox

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

  • زمانی‌ که طرح کوچکی دارید: اگر می‌خواهید فقط چند ردیف یا ستون طراحی کنید، Flexbox بهترین انتخاب است.
  • وقتی که می‌خواهید عناصر را هم‌تراز کنید: CSS Flex برای ایجاد هماهنگی بین عناصر صفحه وب بهترین انتخاب است. در این شرایط، به یک Flex Container احتیاج دارید و باید با استفاده از display: flex یک Flex Container بسازید و بعد جهت فلکس را تعریف کنید.
  • وقتی که برای اولین بار طرح صفحه‌ای را طراحی می‌کنید: اگر هنوز ایده‌ای درباره محتوای صفحه‌های سایت ندارید و درباره ظاهر سایت تصمیمی نگرفته‌اید، Flexbox بهترین انتخاب برای شما است.

آخرین نکته اینکه شما می‌توانید همه بخش‌های اپلیکیشن را با فلکس باکس یا CSS grid بسازید و از هر دوی آن‌ها نتیجه مشابهی بگیرید. ولی اگر نقشه دقیق‌تر و ماندگارتری دارید، بهتر است از CSS گرید استفاده کنید.

CSS Grid چیست؟

What Is CSS Grid

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

بیشتر بخوانید: انتخاب استک برنامه نویسی درست

ویژگی‌های مشترک CSS Grid و Flexbox

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

سخن آخر

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

منابع:

sabzlearn.ir | https://blog.logrocket.com

با ما همراه شوید!

تیم‌های مختلف آسا در ساختمان‌ها و موقعیت‌های مکانی مختلف آسا مستقر هستند. برای اطلاع از آدرس‌ها و راه‌های ارتباطی با آسا، به صفحه «درباره آسا» مراجعه کنید.

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

دیدگاه‌ها

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

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