مفهوم فلکس باکس (Flex Box) یا Flexible Box یک مدل برای لایه بندی صفحات وب در طراحی سایت می باشد که به شما کمک میکند بدون استفاده از float و یا positioning به طراحی صفحات انعطاف پذیر و در نهایت واکنشگرا بپردازید.فلکس باکس یک زبان جداگانه نیست و زیر مجموعه ای از css است.بنابراین نیازی به دانلود کردن هیچ چیز اضافه ای نیست و به کمک همان سی اس اسی که دارید می توانید از فلکس باکس برای طراحی تان استفاده کنید.
اگر با لایه بندی صفحات آشنا باشید حتما با ایرادات موجود در ویژگی float که به کمک خاصیت clear fix حل می شود مواجه شده اید.
در عکس بالا سمت چپ زمانی است که شما از فلوت استفاده می کنید.عکس گویای این است که هنگام استفاده از فلوت المان ها انگار به صفحه مانیتور تان چسبیده است .بجز آن قسمتی که از فلوت استفاده کردیده اید, در واقع حالت سه بعدی به خودش میگیرد و شما می توانید آن را به راحتی جا به جا کنید. دقیقا در عکس قابل مشاهده است که المان های های کمرنگ چسبیده به صفحه هستند ولی آن قسمت پر رنگ تر حالت شناور به خود گرفته است.
اما در عکس سمت راست که فلکس باکس را نشان میدهد المان ها همگی به صفحه چسبده اندو حالت شناور ندارند ولی ما می تواینم به راحتی آن ها را جا به جا کنیم .
همانطور که خودتان بهتر می دانید امروزه در این عصر از تکنولوژی هر ماه و هر هفته و بلکه هر روز یک گوشی جدید یا یک تبلت جدید و... در هر صورت یک دستگاه جدید تولید میشود و خب قاعدتا در سایز های مختلفی هستند و ما به عنوان یک توسعه دهنده و طراح وب باید در صدد این برآییم که سایتی طراحی کنیم که بیشترین سازگاری را با دستگاه های موجود داشته باشد چون ما نمی توانیم برای همه دستگاه های موجود سایت رسپانسیو طراحی کنیم بنابراین بالاترین بازدهی مد نظر طراح باید قرار بگیرد.
فلکس باکس از دو قسمت کلی تشکیل شده است.همانند عکس زیر , یک قسمت از flex container که همان مخزنی است که آیتم های آن به صورت فلکس قرار می گیرد و یک قسمت آیتم های آن که به صورت فلکسیبل هستند.
کد مربوط به عکس بالا در html به صورت زیر خواهد بود:
<div class="flex-container"> <div> Item1</div> <div> Item2</div> <div> Item3</div> <div> Item4</div> </div>
برای فلکسیبل کردن آیتم ها در css می نویسیم:
.flex-container {display: flex;}
فلکس باکس 5تا ویژگی مهم دارد که با هم به بررسی آن ها می پردازیم:
.flex-container { flex-direction: row / culomn / row-revers / culomn-revers; }
برای بر طرف کردن مشکل به وجود آمده در سمت چپ در کدهای css به صورت زیر عمل میکنیم
.flex-container { display: flex; flex-wrap: wrap; }
.flex-container{ display: flex; justify-content: center/ flex-start / flex-end / space-between / space-around }
این جابه جایی در justify-content به صورت افقی است .برای جا به جایی به صورت عمودی از aling-item استفاده میشود. نتایج در تصویر زیر آورده شده است.
.flex-container{ aling-item: center / flex-start / flex-end /stretch }
خاصیت aling-selfبه ما این امکان را می دهد تا المان به صورت مجزا از باقی المان ها جا به جا شود.به تصویر زیر دقت کنید.
.item3{ aling-self: center / flex-start / flex-end /stretch/baseline ; }
هامنطور که می بینید آیتم به صورت عمودی در حال تغییر است اگر بخواهید به صورت افقی آن را جا به جا کنید باید دستور زیر را به کانتیر آیتم خود بدهید.
.flex-container{ flex-direction: culomn; } .item3{ aling-self: center / flex-start / flex-end /stretch/baseline ; }
آیتم هایی که در کانتینر یعنی همان باکس بنفش به صورت فلکس قرار گرفته اند.به صورت دیفالت اندازه ای برابر با ایتم 1و3و4 دارند اما در آیتم 2 این اندازه بزرگ تر است در واقع با نوشتن کد زیر آیتم 2 اندازه اش مقداری می شود تا قسمت باقی مانده کانتینر را در بر بگیرد
.item2{ flex-grow: 2; }
در تصویر بالا قسمت اول حالت دیفالت نشان داده شده است وقتی مقدار 1 را به flex-growبدهیم تمامی آیتم ها به یک اندازه کل container را پر میکنند.حالا اگر به صرفا یکی از آیتم ها مقدار بیشتر از 1 بدهیم این آیتم متناسب با عددی که برای آن لحاظ شده است اصطلاحا کش (stretch) پیدا میکند.این مقدار نه پیکسل است نه em نه vh و نه واحد اندازه گیری دیگری .بلکه فقط یک میزان تناسب است.که به درستی در تصویر نشان داده شده است.برای درک بهتر در تصویر زیر مقدار 3 به flex-grow داده شده است.
همانطور که مشاهده کردید فلکس باکس راه حل های خیلی ساده تری را برای طراحی سایت ارائه داده است.و در این مقاله سعی شد مهم ترین ویژگی های آن گفته شود.یادگیری فلکس باکس اصلا سخت نیست و بسیار به شما برای طراحی و به خصوص ریسپانیو کردن صفحه وب تان کمک می کند بنابراین سعی کنید در یادگیری مطالب مربوط به فلکس باکس کوشا باشید.