آشنایی با FlexBox در CSS [بخش اول]
تاریخ انتشار:۱۳:۴ ۱۳۹۸/۱۰/۷

آشنایی با FlexBox در CSS [بخش اول]



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





قبل از FlexBox


قبل از FlexBox برای طرح بندی صفحه از مقادیر زیر استفاده می‌شد.


  • Block
  • Inline
  • Table
  • Positioned


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

در زیر می‌توانید لیست مرورگرهایی که می‌توانند از این قابلیت استفاده کنند را ببینید.


  • +Chrome 29
  •  +Firefox 28
  •  +Internet Explorer 11
  •  +Opera 17
  •  Safari 6.1+ (prefixed with -webkit-)
  •  +Android 4.4
  •  iOS 7.1+ (prefixed with -webkit-)





برای استفاده از فلکس باید با دو تا مفهوم آشنا شویم تا بتوانیم به راحتی با آن کار کنیم.


  •  Flex Container
  •  Flex Item


Flex Container همان گونه که از اسمش پیداست یک عنصر پدر می‌باشد که خاصیت Display آن با Flex مقدار دهی شده است و Flex Item فرزندان Flex Container هستند که خصوصیات مربوط به خود را دارا می‌باشند.


  1. <"div class= "flex-container >
  2. <div > 1 </div >
  3. <div > 2 </div >
  4. <div > 3 </div >
  5. <div />





همان گونه که در کد بالا دیدیم کلاس عنصر پدر یا Flex Container را به صورت زیر تعریف می‌کنیم.


  1. }flex-container. 
  2. ;display : flex
  3. {


دستورات مربوط به Flex Container 


۱- دستور Flex-Direction


این ویژگی تعیین کننده جهت و نوع نمایش آیتم‌های داخل Flex Container که از این به بعد آنها Flex Items خواهیم گفت. این ویژگی می‌تواند تعیین کند که آیتم‌ها به صورت ستونی (Column) و یا به صورت سطری (Row) نمایش داده شوند. در حالت پیشفرض به صورت row نمایش داده می‌شوند. همچنین می‌توان با استفاده از کلمه Reverse جهت نمایش را در سطر و یا ستون معکوس کرد.


  1. }flex-container .
  2. ;display : flex 
  3. ;flex-direction : column
  4. {





۲- دستور Flex-Wrap


این دستور مشخص می‌کند زمانی که مجموع طول آیتم‌ها از طول Flex Container بیشتر بود چه اتفاقی بیافتد. اگر آن را روی NoWrap تنظیم کنید، از طول آیتم‌ها به میزان مساوی کم می‌شود تا در Flex Container جا بشوند. ولی اگر مقدار آن را Wrap بزارید سطر شکسته می‌شود و ادامه آیتم‌ها در خط بعد نمایش داده می‌شوند.


  1. }flex-container.
  2. ;display : flex
  3. ;flex-wrap : wrap
  4. {





  1. <div class= "clear" style= "height:20px;" > </ div>

  2. }flex-container.
  3. ;display : flex 
  4. ;flex-wrap : nowrap 
  5. {





ترکیب دو دستور بالا یعنی Wrap و Direction را می‌توان با دستورFlow نوشت.


  1. }flex-container.
  2. ;display : flex 
  3. ;flex-flow : row wrap 
  4. {


۳- دستور Justify-Content


این دستور موقعیت آیتم‌ها را به صورت افقی تنظیم می‌کند. به عنوان مثال اگر بخواهیم همه آیتم‌ها در مرکز Flex Container وسط چین شوند مانند دستور زیر مقدار Justify-Content را برابر Center قرار می‌دهیم.


  1. }flex-container.
  2. ;display : flex 
  3. ;justify-content : center 
  4. {





این دستور می‌تواند مقادیر زیر را بپذیرد.


مقدار Flex-Start: آیتم‌ها از ابتدای عنصر پدر شروع می‌شوند.





مقدار Flex-End: آیتم‌ها از انتهای عنصر پدر شروع می‌شوند.





مقدار Space-Around: فضای خالی باقی مانده به صورت مساوی در بین آیتم‌ها تقسیم می‌شود.





مقدار Space-Between: فضای خالی باقیمانده به صورت مساوی در بین آیتم‌ها تقسیم می‌شود.به غیر از آیتم اول و آخر که به ابتدا و انتهای عنصر پدر می‌چسبند.





۴- دستور Align-Items


این دستور مشابه دستور قبلی می‌باشد با این تفاوت که موقعیت آیتم‌ها را به صورت عمودی تنظیم می‌کند. به عنوان مثال مقدار Center برای این ویژگی ،سطر آیتم‌ها را در وسط قرار می‌دهد.


  1. }flex-container.
  2. ;display : flex
  3. ;height : 200px
  4. ;align-items : center
  5. {





این دستور همانند دستور قبلی همان مقدارها را می‌گیرد با این تفاوت که دو مقدار جدید هم به آنها اضافه شده است.


مقدار stretch : این دستور ارتفاع آیتم‌ها را به یک اندازه زیاد می‌کند تا تمامی ارتفاع عنصر پدر را بپوشانند.




مقدار baseline : این دستور برای شرایطی به کار می‌رود که ما آیتم‌هایی با ارتفاع نامساوی داشته باشیم. با استفاده از این دستور محتوای تک تک آیتم‌های ما روی یک خط قرار می‌گیرند.





۵- دستور Align-Content


این دستور موقعیت خطوطی را که آیتم ها با هم می سازند، تنظیم می کند. به عنوان مثال اگر این مقدار را برابر space-between فضای باقی مانده از ارتفاع را بین خطوط به نسبت مساوی تقسیم می کند. به غیر از آیتم اول و آخر که به ابتدا و انتها می چسبند.


  1. }flex-container.
  2. ;display : flex
  3. ;height : 600px
  4. ;flex-wrap : wrap
  5. ;align-content : space-between
  6. {





مقدار Space-Around: فضای باقی مانده از ارتفاع را بین خطوط به نسبت مساوی تقسیم می‌کند.





مقدار Stretch: مقدار ارتفاع ستون‌ها را تا اندازه‌ای بزرگ می‌کند که کاملا ارتفاع عنصر پدر را بپوشانند.






مثال: یکی از بهترین کارهایی که می‌تواند انجام داد این است که آیتم‌ها را دقیقا در مرکز عنصر پدر قرار بدهیم برای این کار کافی است که مقدار Justify-Content را برابر Center و مقدار Align Items را نیز برابر Center قرار می‌دهیم.



در بخش بعد ویژگی‌های مربوط به Flex Itemها را با هم بررسی می‌کنیم و نحوه پیاده سازی این خصوصیات را در Bootstrap4 با هم یاد می‌گیریم.





منبع:nikamooz