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

CSS Flexbox (ماژول طرح بندی جعبه انعطاف پذیر) - ماژول طرح کانتینر انعطاف پذیر یک روش عناصر تخمگذار است، اساس محور مبتنی بر است.

Flexbox شامل خارج است مخزن انعطاف پذیر (کانتینر فلکس) و اقلام انعطاف پذیر (آیتم های فلکس). عناصر انعطاف پذیر را می توان به رشته یا ستون ساخته شده، و فضای آزاد باقی مانده بین آنها به روش های مختلف توزیع می شود.

ماژول Flexbox به شما امکان می دهد تا وظایف زیر را حل کنید:

  • عناصر را در یکی از چهار جهت قرار دهید: از چپ به راست، سمت چپ راست، بالا پایین یا پایین بالا.
  • روش را برای نمایش عناصر لغو کنید.
  • به طور خودکار ابعاد اقلام را تعیین می کند تا آنها به فضای مقرون به صرفه برسند.
  • مشکل را با مراکز افقی و عمودی حل کنید.
  • انتقال عناصر داخل ظرف بدون اجازه سرریز آن.
  • ستون های همان ارتفاع را ایجاد کنید.
  • ایجاد فشار به پایین صفحه.

Flexbox Tasks خاص را حل می کند - ایجاد طرح های یک بعدی، به عنوان مثال، پانل ناوبری، از آنجا که عناصر Flex را می توان تنها بر روی یکی از محورها قرار داد.

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

Flexbox چیست؟

مرورگرهای پشتیبانی

یعنی: 11.0، 10.0 -ms-
فایرفاکس: 28.0، 18.0 -moz-
کروم: 29.0، 21.0 -Webkit-
صفری: 6.1 -Webkit-
اپرا: 12.1 -Webkit
iOS Safari: 7.0 -Webkit-
اپرا مینی: 8
مرورگر آندروید: 4.4، 4.1 -Webkit-
کروم برای آندروید: 44

1. مفاهیم پایه

شکل. 1. مدل Flexbox

برای توصیف ماژول Flexbox، یک مجموعه خاص از اصطلاحات استفاده می شود. مقدار جریان انعطاف پذیر و حالت ضبط مکاتبات این اصطلاحات را به جهت های فیزیکی تعیین می کند: بالا / راست / پایین / چپ، محورها: عمودی / افقی و اندازه: عرض / ارتفاع.

محور اصلی - محور که در آن عناصر فلکس قرار داده می شود. این عمدتا اندازه گیری می شود.

شروع اصلی و پایان اصلی - خطوطی که قسمت اولیه و نهایی کانتینر فلکس را تعریف می کنند، نسبی که عناصر فلکس را از بین می برند (از شروع اصلی به سمت انتهای اصلی شروع می شود).

اندازه اصلی) - عرض یا ارتفاع ظرفیت انعطاف پذیر یا عناصر فلکس، بسته به این واقعیت که آنها به طور عمده اندازه گیری می شوند، اندازه اصلی کانتینر فلکس یا عنصر فلکس را تعیین می کنند.

محور صلیب - محور عمود بر محور اصلی. آن را در ابعاد عرضی گسترش می دهد.

صلیب شروع و پایان متقابل - خطوطی که قسمت اولیه و نهایی محور عرضی را تعریف می کنند نسبت به آن عناصر فلکس را از بین می برند.

اندازه صلیب) - عرض یا ارتفاع عناصر انعطاف پذیر یا انعطاف پذیری، بسته به آنچه در ابعاد عرضی است، اندازه عرضی آنها است.


شکل. 2. حالت ردیف و ستون

2. انعطاف پذیر

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

مدل نشانه گذاری Flexbox با ارزش مشخصی از ویژگی CSS از صفحه نمایش عنصر HTML پدر و مادر حاوی بلوک های زیر انتخاب شده در داخل خود همراه است. برای کنترل عناصر با استفاده از این مدل، باید اموال صفحه نمایش را به صورت زیر تنظیم کنید:

Flex-container (/ * تولید بلوک انعطاف پذیر فلکس * / صفحه نمایش: -webkit-flex؛ صفحه نمایش: Flex؛) .Flex-container (/ * ایجاد یک رشته رشته فلاش - صفحه نمایش * / صفحه نمایش: -webkit-inline-flex ؛ صفحه نمایش: inline-flex؛)

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


شکل. 3. عناصر هماهنگ در مدل Flexbox

اگر بلوک پدر و مادر حاوی متن یا تصاویر بدون بسته بندی، آنها تبدیل به عناصر انعطاف پذیر ناشناس. متن بر روی لبه بالا بلوک کانتینر قرار دارد و ارتفاع تصویر برابر با ارتفاع بلوک برابر است، I.E. تغییر شکل یافته است.

3. عناصر انعطاف پذیر

Flex-lements - بلوک های نشان دهنده محتویات مخزن انعطاف پذیر در جریان است. کانتینر فلکس یک زمینه قالب بندی جدید را برای محتویات آن ایجاد می کند که ویژگی های زیر را ایجاد می کند:

  • برای عناصر فلکس، ارزش آنها از اموال صفحه نمایش مسدود شده است. ارزش نمایش: بلوک درون خطی؛ و صفحه نمایش: سلول جدول؛ محاسبه شده در صفحه نمایش: بلوک؛ .
  • فضای خالی بین عناصر ناپدید می شود: آن را تبدیل به عنصر فلکس خود نمی شود، حتی اگر متن inter-election در یک عنصر انعطاف پذیر ناشناس پیچیده شود. برای محتویات یک عنصر انعطاف پذیر ناشناس، سبک های خود را تنظیم نمیکند، اما آنها را به ارث برده اند (به عنوان مثال، پارامترهای فونت) از کانتینر فلکس.
  • عنصر انعطاف پذیر مطلقا موقعیت در طرح طرح شرکت نمی کند.
  • زمینه های حاشیه ای عناصر انعطاف پذیر مجاور سقوط نمی کنند.
  • درصد درصد حاشیه و پودر از اندازه داخلی بلوک حاوی آنها محاسبه می شود.
  • حاشیه: خودکار؛ گسترش، جذب فضای اضافی در اندازه گیری مناسب. آنها می توانند مورد استفاده قرار گیرند تا عناصر انعطاف پذیر مجاور را به هم متصل کنند یا گسترش دهند.
  • حداقل اندازه خودکار عناصر فلکس به طور پیش فرض حداقل اندازه محتوای آن است، یعنی Min-Width: Auto؛ . برای ظروف پیمایش، حداقل اندازه خودکار معمولا صفر است.

4. عناصر انعطاف پذیر و جهت گیری

محتویات کانتینر انعطاف پذیر را می توان در هر جهت تجزیه کرد و به هر ترتیب (مرتب سازی مجدد عناصر فلکس داخل ظرف تنها بر روی رندر بصری) تاثیر می گذارد).

4.1. جهت محور اصلی: جهت فلکس

اموال متعلق به کانتینر فلکس است. جهت محور اصلی را مدیریت می کند، در حالی که عناصر فلکس مطابق با حالت ضبط فعلی انباشته می شوند. به ارث برده نمی شود

جهت فلکس
ارزش های:
ردیف مقدار پیش فرض از چپ به راست (در RTL به سمت راست سمت چپ). عناصر فلکس در رشته قرار می گیرند. آغاز (اصلی شروع) و پایان (اصلی پایان) جهت محور اصلی، به ابتدا (شروع درون خطی) و پایان (درون خطی) محور درون خطی (محور درون خطی) مطابقت دارد.
ردیف معکوس جهت به سمت راست سمت راست (در RTL چپ به راست). عناصر فلکس در رشته نسبت به لبه سمت راست کانتینر (در RTL - LEFT) قرار می گیرند.
ستون جهت از بالا به پایین. عناصر فلکس در ستون گذاشته می شوند.
ستون معکوس ستون با عناصر در جهت معکوس، پایین به بالا.
اولیه
به ارث می برند.

شکل. 4. اموال Flex-Direction برای زبان های چپ به راست

نحو

Flex-container (صفحه نمایش: -Webkit-Flex؛ -Webkit-Flex-Direction: Row-Reverse؛ صفحه نمایش: Flex؛ جهت فلکس: ردیف معکوس؛)

4.2. مدیریت کانتینر Multi-Flex: Flex-Wrap

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

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


شکل. 5. مدیریت چند جریان با استفاده از خواص Flex-Wrap برای زبان های LTR

نحو

Flex-container (نمایش: -webkit-flex؛ -Webkit-flex-wrap: wrap؛ صفحه نمایش: Flex؛ Flex-Wrap: Wrap؛)

4.3. خلاصه ای از جهت و چند مرحله ای: Flex-Flow

اموال به شما امکان می دهد دستورالعمل های محورهای اصلی و عرضی را تعیین کنید، و همچنین امکان انتقال عناصر انعطاف پذیر در صورت لزوم برای چندین خط. این یک ضبط اختصار از خواص Flex-Direction و Flex-Wrap است. مقدار پیش فرض Flex-Flow: ROW NOWRAP؛ . اموال به ارث برده نمی شود.

نحو

Flex-container (نمایش: -webkit-flex؛ -webkit-flex-flow: wrap ردیف؛ صفحه نمایش: Flex؛ Flex-Flow: Row Wrap؛)

4.4. صفحه نمایش عنصر انعکاس: سفارش

اموال مرتبه را تعیین می کند که عناصر Flex نمایش داده می شوند و در داخل ظروف فلکس قرار می گیرند. به عناصر انعطاف پذیر اعمال می شود. اموال به ارث برده نمی شود.

در ابتدا، تمام عناصر فلکس سفارش دارند: 0؛ . هنگام تعیین مقدار از -1 برای عنصر، آن را به ابتدای زمان حرکت می دهد، ارزش 1 - تا پایان. اگر چندین عنصر انعطاف پذیر دارای مقدار سفارش یکسان باشند، آنها مطابق با سفارش اصلی نمایش داده می شوند.

نحو

Flex-container (نمایش: -webkit-flex؛ صفحه نمایش: Flex؛) .Flex-Item (-Webkit-Order: 1؛ سفارش: 1؛)
شکل. 6. عناصر انعطاف پذیر عناصر

5. عناصر انعطاف پذیر انعطاف پذیر

جنبه تعیین کننده طرح انعطاف پذیر، توانایی "خم شدن" عناصر انعطاف پذیر، تغییر عرض / ارتفاع آنها (بسته به اینکه اندازه آن بر روی محور اصلی قرار دارد) برای پر کردن فضای موجود در ابعاد اصلی است. این کار با استفاده از اموال فلکس انجام می شود. مخزن فلکس فضای آزاد را بین عناصر کودک خود (نسبت به ضریب انعطاف پذیری آنها) توزیع می کند تا ظرف را پر کند یا آنها را فشرده کند (نسبت به ضریب انعطاف پذیری انعطاف پذیر) برای جلوگیری از سرریز.

عنصر فلکس به طور کامل "انعطاف پذیر" خواهد بود اگر مقادیر انعطاف پذیری و انعطاف پذیری آن صفر باشد، و "انعطاف پذیر" در غیر این صورت.

5.1. مجموعه ای از اندازه های انعطاف پذیر با یک ویژگی: Flex

اموال یک رکورد اختصار از خواص فلکس رشد، رشد انعطاف پذیر و انعطاف پذیر است. مقدار پیش فرض: فلکس: 0 1 خودکار؛ . شما می توانید هر دو و هر سه ویژگی را مشخص کنید. اموال به ارث برده نمی شود.

نحو

Flex-container (صفحه نمایش: -webkit-flex؛ صفحه نمایش: Flex؛) .Flex-Item (-Webkit-Flex: 3 1 100px؛ -MS-FLEX: 3 1 100px؛ فلکس: 3 1 100px؛)

5.2. ضریب رشد: انعطاف پذیری رشد

اموال ضریب رشد یک عنصر انعطاف پذیر را نسبت به سایر عناصر فلکس در ظرف انعطاف پذیر در طول توزیع فضای آزاد مثبت تعیین می کند. اگر مجموع مقادیر عناصر انعطاف پذیری فلکس رشد در رشته کمتر از 1 باشد، آنها کمتر از 100 درصد از فضای آزاد را اشغال می کنند. اموال به ارث برده نمی شود.


شکل. 7. مدیریت فضای آزاد در قسمت ناوبری با استفاده از انعطاف پذیری

نحو

Flex-container (نمایش: -webkit-flex؛ صفحه نمایش: Flex؛) .Flex-Item (-Webkit-Flex-Grow: 3؛ Flex-Grow: 3؛)

5.3. نسبت فشرده سازی: انعطاف پذیری

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


شکل. 8. محدود کردن عناصر انعطاف پذیر در رشته

نحو

Flex-container (صفحه نمایش: -Webkit-flex؛ صفحه نمایش: Flex؛) .Flex-Item (-WebKit-Flex-Shrink: 3؛ \u200b\u200bFlex-Shrink: 3؛)

5.4. اندازه پایه: فلسفر پایه

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

نحو

Flex-container (صفحه نمایش: -Webkit-Flex؛ صفحه نمایش: Flex؛) .Flex-Item (-WebKit-Flex-Base: 100px؛ Flex-Base: 100px؛)

6. هماهنگی

6.1 هماهنگی در محور اصلی: توجیه محتوا

اموال عناصر فلکس را در امتداد محور اصلی کانتینر انعطاف پذیر قرار می دهد، توزیع فضای آزاد، که توسط عناصر فلکس غیرقانونی است. هنگامی که آیتم به یک ظرف انعطاف پذیر تبدیل می شود، عناصر Flex پیش فرض با هم گروه بندی می شوند (اگر میدان حاشیه مشخص نشده باشد). پس از محاسبه مقادیر حاشیه و انعطاف پذیری، شکاف ها اضافه می شوند. اگر هر عنصر دارای مقدار غیر صفر از انعطاف پذیری یا حاشیه: خودکار؛ اموال هیچ نفوذی ندارد اموال به ارث برده نمی شود.

ارزش های:
Flex-Start مقدار پیش فرض عناصر فلکس در جهت خروج از خط اولیه کانتینر فلکس قرار می گیرند.
انعطاف پذیری عناصر Flex-Elements در جهت خروج از خط نهایی کانتینر فلکس قرار می گیرند.
مرکز عناصر انعطاف پذیر در مرکز کانتینر فلکس قرار می گیرند.
فاصله بین عناصر انعطاف پذیر به طور یکنواخت بر روی خط توزیع می شوند. اولین عنصر فلکس در لبه خط اولیه قرار می گیرد، آخرین عنصر Flex، با لبه خط نهایی قرار می گیرد و عناصر انعطاف پذیر باقی مانده در خط توزیع می شوند تا فاصله بین هر دو عنصر مجاور باشد همان. اگر فضای آزاد باقی مانده منفی باشد یا در رشته تنها یک عنصر انعطاف پذیر وجود دارد، این مقدار با پارامتر شروع Flex-Start یکسان است.
فضای اطراف عناصر فلکس بر روی خطوط توزیع می شوند به طوری که فاصله بین هر دو عنصر انعطاف پذیر مجاور یکسان است، و فاصله بین عناصر Flex اول / آخر و لبه های کانتینر فلکس از فاصله بین عناصر فلکس متغیر بود.
اولیه مقدار اموال پیش فرض را تنظیم می کند.
به ارث می برند. ارزش اموال از عنصر والدین را به ارث می برد.

شکل. 9. تراز کردن عناصر و توزیع فضای آزاد با استفاده از خواص توجیه محتوا

نحو

Flex-container (نمایش: -webkit-flex؛ -webkit-justify content: flex-start؛ صفحه نمایش: Flex؛ توجیه محتوا: Flex-Start؛)

6.2 محور عرضی را هماهنگ کنید: align-items و talign-self

عناصر انعطاف پذیر را می توان بر روی محور عرضی خط فعلی کانتینر انعطاف پذیر قرار داد. align-items تنظیم هم ترازی برای تمام عناصر فکس کانتینر، از جمله عناصر انعطاف پذیر ناشناس. Helign-Self به شما این امکان را می دهد که این هماهنگی را برای عناصر انعطاف پذیری فرد لغو کنید. اگر هر یک از عنصر انعطاف پذیری حاشیه عرصه اتوماتیک باشد، هماهنگ کردن خود هیچ تاثیری ندارد.

6.2.1 align-items

اموال عناصر Flex را شامل می شود، از جمله عناصر انعطاف پذیر ناشناس در محور عرضی. به ارث برده نمی شود

ارزش های:
Flex-Start
انعطاف پذیری
مرکز
پایه خطوط اساسی تمام عناصر فلکس درگیر در هماهنگی همزمان هستند.
کش آمدن.
اولیه مقدار اموال پیش فرض را تنظیم می کند.
به ارث می برند. ارزش اموال از عنصر والدین را به ارث می برد.
شکل. 10. تراز کردن عناصر در یک ظرف عمودی

نحو

Flex-container (صفحه نمایش: -webkit-flex؛ -webkit-align-items: Flex-Start؛ صفحه نمایش: Flex؛ Align-Items: Flex-Start؛)

6.2.2 هماهنگ کردن خود

اموال مسئول هماهنگی یک عنصر جداگانه جداگانه در ارتفاع کانتینر انعطاف پذیر است. ترتیب هماهنگی مشخص شده توسط align-items را لغو می کند. به ارث برده نمی شود

ارزش های:
خودکار. مقدار پیش فرض عنصر Flex با استفاده از هماهنگی مشخص شده در خواص انعطاف پذیر انعطاف پذیر
Flex-Start لبه بالای عنصر فلکس با خط Flex (یا در فاصله، با توجه به میدان های حاشیه مشخص شده و چارچوب مرزی عنصر) عبور می کند که از طریق آغاز محور عرضی عبور می کند.
انعطاف پذیری لبه پایین تر از عنصر فلکس با خط Flex (یا در فاصله، با توجه به میدان های حاشیه مشخص شده و چارچوب مرزی عنصر) عبور می کند که از انتهای محور عرضی عبور می کند.
مرکز زمینه های Element Flex بر روی محور عرضی در خط Flex متمرکز شده اند.
پایه عنصر فلکس با پایه تراز شده است.
کش آمدن. اگر اندازه عرضی عنصر فلکس به عنوان خودکار محاسبه شود و هیچ یک از مقادیر عرضی حاشیه به وسیله خودکار برابر نیست، عنصر کشش است. مقدار پیش فرض
اولیه مقدار اموال پیش فرض را تنظیم می کند.
به ارث می برند. ارزش اموال از عنصر والدین را به ارث می برد.

شکل. 11. هماهنگی عناصر انعطاف پذیر فردی

نحو

Flex-container (نمایش: -webkit-flex؛ صفحه نمایش: Flex؛) .Flex-Item (-Webkit-align-self: center؛ align-self: center؛)

6.3. خطوط کانتینر انعطاف پذیر: تراز کردن محتوا

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

ارزش های:
Flex-Start ردیف ها به سمت شروع ظروف فلکس ذخیره می شوند. لبه خط اول نزدیک به لبه کانتینر انعطاف پذیر قرار دارد، هر کدام پس از آن نزدیک به خط قبلی است.
انعطاف پذیری ردیف ها به سمت انتهای کانتینر فلکس قرار می گیرند. لبه آخرین ردیف نزدیک به لبه کانتینر انعطاف پذیر است، هر یک از قبلی - نزدیک به ردیف بعدی.
مرکز ردیف ها به سمت مرکز کانتینر فلکس ذخیره می شوند. ردیف ها نزدیک به یکدیگر قرار دارند و در مرکز کانتینر انعطاف پذیر با فاصله ای برابر بین لبه اولیه محتویات کانتینر فلکس و رشته اول و بین لبه نهایی محتویات کانتینر فلکس قرار می گیرند رشته آخر
فاصله بین ردیف ها یکنواخت در ظرف انعطاف پذیر توزیع می شوند. اگر فضای آزاد باقی مانده منفی باشد یا ظرف انعطاف پذیر تنها یک خط انعطاف پذیر داشته باشد، این مقدار با انعطاف پذیری یکسان است. در غیر این صورت، لبه خط اول نزدیک به لبه اولیه محتویات کانتینر انعطاف پذیر است، لبه آخرین ردیف نزدیک به لبه نهایی محتوای کانتینر Flex است. خطوط باقی مانده توزیع می شوند تا فاصله بین هر دو ردیف مجاور یکسان باشد.
فضای اطراف ردیف ها یکنواخت در ظرف انعطاف پذیر با فضای نیمه در هر دو طرف توزیع می شوند. اگر فضای آزاد باقی مانده منفی باشد، این مقدار با مرکز مرکز یکسان است. در غیر این صورت، رشته ها به گونه ای توزیع می شوند که فاصله بین هر دو ردیف مجاور یکسان است، و فاصله بین ردیف اول / آخرین و لبه های محتویات کانتینر فلکس از فاصله بین خطوط متغیر است.
کش آمدن. مقدار پیش فرض ردیف عناصر فلکس به طور مساوی کشیده شده است، تمام فضای موجود را پر می کند. اگر فضای آزاد باقی مانده منفی باشد، این مقدار با انعطاف پذیری یکسان است. در غیر این صورت، فضای آزاد به طور مساوی بین تمام ردیف ها تقسیم می شود و اندازه عرضی آنها را افزایش می دهد.
اولیه مقدار اموال پیش فرض را تنظیم می کند.
به ارث می برند. ارزش اموال از عنصر والدین را به ارث می برد.
شکل. 12. تراز چند خط از عناصر فلکس

نحو

Flex-container (نمایش: -Webkit-Flex؛ -Webkit-Flex-Flow: Webkit-Flex-Flow: Webkit-align-content: Flex-end؛ صفحه نمایش: Flex؛ Flex-Flow: Row Wrap؛ Align-Content: Flex-End ؛ ارتفاع: 100px؛)

ماژول طرح بندی Flexbox (جعبه انعطاف پذیر) با هدف ارائه بیش از روش موثر محل، تراز و توزیع فضای آزاد بین عناصر موجود در ظرف، حتی زمانی که اندازه آنها ناشناخته است و / یا پویا (بنابراین، کلمه "flex") ناشناخته است.

ایده اصلی نشانه گذاری انعطاف پذیر (انعطاف پذیر)، ارائه یک ظرف با توانایی تغییر عرض / ارتفاع (و سفارش) عناصر آن به منظور ارائه بهترین راه فضای موجود را پر کنید (عمدتا برای قرار دادن در تمام انواع و اندازه های صفحه نمایش). کانتینر Flexbox عناصر را برای پر کردن فضای آزاد گسترش می دهد یا آنها را فشرده می کند تا از سرریز جلوگیری شود.

مهمترین چیز این است که Flexbox در مقایسه با طرح بندی های معمول (بلوک بر اساس موقعیت های عمودی و عناصر رشته بر اساس موقعیت افقی) یک آگنوستیک جهت دار است (بلوک های مبتنی بر موقعیت های عمودی و عناصر رشته ای بر اساس موقعیت افقی). علیرغم این واقعیت که آنها به اندازه کافی کار می کنند، آنها انعطاف پذیری برای پشتیبانی از برنامه های بزرگ یا پیچیده ای ندارند (به ویژه هنگامی که به تغییرات در جهت، تغییر اندازه، کشش، فشرده سازی، فشرده سازی و غیره تغییر می کند.

توجه داشته باشید. Flexbox مناسب تر برای اجزای برنامه کاربردی و طرح بندی های کوچک است، در حالی که شبکه CSS برای طرح بندی های بزرگتر طراحی شده است.

مبانی و اصطلاحات

از آنجا که Flexbox یک کل ماژول است، نه یک ملک جداگانه، شامل بسیاری از چیزهای مختلف، از جمله مجموعه ای از کل خواص. بعضی از آنها طراحی شده اند تا ظرف خود را نصب کنند (عنصر والدین شناخته شده به عنوان "مخزن فلکس")، در حالی که دیگران باید با عناصر کودک نصب شوند (به نام "عناصر فلکس") نصب می شوند.

اگر سیستم طرح بندی معمولی بر اساس دستورالعمل بلوک و رشته است، Flexbox بر اساس "Flex-Flow Flow" است. لطفا نگاهی به این نقاشی از مشخصات توضیح دهید که ایده اصلی Flexbox را توضیح دهید.

اساسا عناصر در کنار هم قرار می گیرند محور اصلی (از شروع اصلی به انتهای اصلی) یا محور صلیب (از متقاطع شروع به متقاطع).

مرورگرهای پشتیبانی

CSS ماژول طرح بندی جعبه انعطاف پذیر

کروم برای آندروید

Browser BlackBerry با شروع از 10 نسخه از یک نحو جدید پشتیبانی می کند.

خواص برای ظرف

خواص عناصر

خواص برای عنصر پدر و مادر (ظروف فلکس)

نمایش دادن

کانتینر فلکس را تعیین می کند؛ یک رشته یا بلوک بستگی به مقدار انتقال دارد. شامل یک زمینه انعطاف پذیر برای تمام عناصر مستقیم، کودک آن است.

کانتینر (صفحه نمایش: flex؛ / * یا interline-flex * /)

لطفا توجه داشته باشید که ستون های CSS بر ظرف انعطاف پذیر تاثیر نمی گذارد.

جهت فلکس


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

کانتینر (جهت فلکس: ردیف | ردیف معکوس | ستون | ستون معکوس؛)

  • ردیف (به طور پیش فرض) - از چپ به راست در LTR؛ راست به سمت چپ در RTL؛
  • ردیف معکوس - راست به چپ در LTR؛ از چپ به راست در RTL؛
  • ستون - همان چیزی است که ردیف، فقط از بالا به پایین؛
  • ستون معکوس - همان چیزی است که ردیف معکوس است، فقط از پایین به بالا؛

انعطاف پذیر


به طور پیش فرض، اقلام سعی خواهد کرد فقط یک خط را پر کنید. شما می توانید این رفتار را تغییر دهید و موارد را به خط بعدی منتقل کنید، در صورت لزوم.

ظرف (بسته بندی Flex-wrap: Nowrap | بسته بندی | بسته بندی کن

  • nowRap (به طور پیش فرض) - تمام عناصر فلکس بر روی یک خط قرار می گیرند؛
  • بسته بندی کردن. - عناصر Flex در چندین خط قرار می گیرند، بالا پایین؛
  • بسته بندی معکوس - عناصر Flex در چندین خط، پایین به بالا قرار می گیرند؛

توجیه


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

کانتینر (توجیه محتوا: Flex-Start | Flex-End | مرکز | فضا-بین | فضا در اطراف؛)

  • flex-Start (به طور پیش فرض) - عناصر به ابتدای خط فشار داده می شوند؛
  • انعطاف پذیری - عناصر به سمت انتهای رشته فشار داده می شوند؛
  • مرکز - عناصر در مرکز در امتداد رشته قرار دارند؛
  • فاصله بین - عناصر به طور مساوی بر روی خط قرار می گیرند؛ اولین عنصر در ابتدای خط است آخرین عنصر واقع در انتهای خط؛
  • فضای اطراف - عناصر به طور مساوی بر روی خط با همان فضای نزدیک آنها قرار می گیرند. لطفا توجه داشته باشید که فضای بصری یکسان نیست، زیرا تمام عناصر دارای فضای مشابه در هر دو طرف هستند. عنصر اول یک واحد فضا را از طرف کانتینر، اما دو واحد بین آن و عنصر بعدی، به دلیل عنصر بعدی نیز دارای یک واحد از دو طرف است.

align-items


این ویژگی رفتار عناصر فلکس را در امتداد محور عرضی در خط فعلی تعیین می کند. از آن به عنوان O، فقط برای محور عرضی (محور اصلی عمود بر عمق) فکر کنید.

کانتینر (Align-Items: Flex-Start | Flex-end | مرکز | پایه | پایه؛)

  • flex-Start - عناصر در ابتدای محور عرضی قرار می گیرند؛
  • flex-end - عناصر در انتهای محور عرضی قرار می گیرند؛
  • مرکز - عناصر در مرکز محور عرضی قرار دارند؛
  • پایه - عناصر توسط پایه تراز می شوند؛
  • کشش (به طور پیش فرض) - کشش برای پر کردن کل ظرف (Min-width / max-width هنوز مشاهده شده است)؛

ترانه


توجه داشته باشید. این ویژگی کار نمی کند زمانی که تنها یک خط از عناصر فلکس وجود دارد.

کانتینر (محتوای هماهنگ: Flex-Start | Flex-End | مرکز | فضا-بین | فضا در اطراف | کشش؛)

  • flex-Start - ردیف ها در ابتدای ظرف قرار دارند؛
  • انعطاف پذیری - خطوط در انتهای ظرف قرار دارند؛
  • مرکز - ردیف ها در مرکز کانتینر قرار می گیرند؛
  • فاصله بین - ردیف ها به طور مساوی توزیع می شوند، اولین خط در ابتدای ظرف قرار دارد و آخرین خط در پایان؛
  • فضای اطراف - ردیف ها به طور مساوی توزیع می شوند همان فاصله بین آنها؛
  • کشش (به طور پیش فرض) - ردیف ها در سراسر عرض کشیده می شوند تا فضای باقی مانده را اشغال کنند؛

خواص برای شرکت های تابعه (عناصر فلکس)

سفارش


به طور پیش فرض، تمام عناصر در سفارش اصلی قرار دارند. با این حال، اموال سفارش مرتکب نظم می شود که عناصر داخل ظرف واقع شده اند.

مورد (سفارش: ; }

انعطاف پذیری


اموال توانایی افزایش عنصر را در اندازه، در صورت لزوم تعیین می کند. این مقدار بدون ابعاد به عنوان یک نسبت طول می کشد که تعیین می کند که مقدار فضای آزاد داخل ظرف باید عنصر را اشغال کند.

اگر تمام عناصر دارای یک اموال انعطاف پذیر هستند که در 1 نصب شده اند، فضای آزاد داخل ظرف به طور مساوی بین تمام عناصر توزیع می شود. اگر یکی از عناصر عناصر به 2 تنظیم شود، عنصر دو برابر فضای بیشتری از بقیه خواهد بود (حداقل سعی کنید).

مورد (Flex-grow: ؛ / * پیش فرض 0 * /)

نشان دادن اعداد منفی غیرممکن است.

پایه فلج

اندازه عنصر پیش فرض را قبل از توزیع فضای باقی مانده تعیین می کند. ممکن است طول (20٪، 5rem، و غیره) یا کلمه کلیدی. کلید واژه خودکار به معنی "شبیه به عرض یا اموال ارتفاع من" است. کلمه کلیدی محتوا به این معنی است که "اندازه بر اساس محتوای عنصر است" کلمه کلیدی هنوز به خوبی پشتیبانی نمی شود، بنابراین دشوار است که آن را بررسی کنید، و حتی دشوار است برای پیدا کردن آنچه که می تواند محتوای خود را، حداکثر محتوا و محتوای مناسب.

مورد (فلاش پایه: | خودکار؛ / * پیش فرض خودکار * /)

اگر به 0 تنظیم شود، فضای اضافی در اطراف محتوای مورد توجه قرار نخواهد گرفت. اگر شما را نصب کنید، فضای اضافی بر اساس ارزش توزیع می شود.

خمیدگی

این کاهش است، و. پارامترهای دوم و سوم (انعطاف پذیری کوچک و انعطاف پذیر) اجباری نیستند. مقدار پیش فرض به 0 1 خودکار تنظیم شده است.

مورد (فلکس: هیچ | [<"flex-grow"> <"flex-shrink">? || <"flex-basis"> ] }

هماهنگ کردن خود


این ملک به شما اجازه می دهد تا هماهنگی پیش فرض (یا مشخص شده با استفاده از اموال) را برای عناصر انعطاف پذیر فرد لغو کنید.

لطفا به توضیح خواص برای درک ارزش های موجود نگاه کنید.

مورد (align-self: auto | flex-start | flex-end | مرکز | پایه | پایه؛)

لطفا توجه داشته باشید که شناور، روشن و عمودی، هیچ تاثیری بر عنصر فلکس ندارد.

مثال ها

بیا شروع کنیم با مثال سادهوظیفه تعیین کننده ای که تقریبا هر روز اتفاق می افتد: مرکز کامل. اگر از FlexBox استفاده می کنید، نمی توان آن را آسان تر کرد.

پدر و مادر (صفحه نمایش: فلکس، ارتفاع: 300 پیکسل؛) .Child (عرض: 100px؛ ارتفاع: 100px؛ حاشیه: خودکار؛)

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

حالا اجازه دهید از برخی خواص بیشتر استفاده کنیم. لیستی از 6 عنصر را در نظر بگیرید، همه با اندازه ثابت در شرایط زیبایی شناختی، اما آنها می توانند به صورت خودکار باشند. ما می خواهیم آنها را به طور مساوی در امتداد محور افقی توزیع کنیم و به طوری که هنگام تغییر اندازه مرورگر همه چیز به ترتیب (بدون درخواست رسانه ها) بود.

Flex-container (صفحه نمایش: Flex؛ Flex-Flow: Wrap Row؛ توجیه محتوا: فضای اطراف؛)

آماده! هر چیز دیگری فقط برخی از مشکلات طراحی است. در زیر نمونه ای از کدپن است، مطمئن شوید که به آنجا بروید و سعی کنید اندازه پنجره ها را تغییر دهید تا ببینید چه اتفاقی می افتد.

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

ناوبری (صفحه نمایش: Flex؛ Flex-Flow: ردیف ردیف؛ توجیه محتوا: Flex-End؛) media همه و (حداکثر عرض: 800px) (.navigation (توجیه محتوا: فضای اطراف؛)) media همه و (حداکثر عرض: 500px) (.Navigation (Flex-Direction: Column؛))

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

Wrapper (صفحه نمایش: Flex-Fless؛ Flex-Flow: Row Wrap؛) .Header، .Main، .Nav، .aside، .footer (Flex: 1 100٪؛) Media همه و (Min-Width: 600px) (.ASide (فلکس: 1 خودکار؛)) media همه و (min-width: 800px) (.main (flex: 2 0px؛) .ASide-1 (سفارش: 1؛) .main (سفارش: 2؛) .aside 2 (سفارش: 3؛) .footer (سفارش: 4؛))

خواص مرتبط

خطاهای

البته، Flexbox بدون خطا نیست. بهترین مجموعه ای که من دیدم توسط فیلیپ والتون و Greg Whitworth نشان داده شده است. این یک مکان منبع باز برای ردیابی تمام خطاها است، بنابراین من فکر می کنم بهتر است فقط لینک را ترک کنید.

اموال سفارش، نظم را مدیریت می کند که در آن عناصر کودک در داخل ظروف فلکس ظاهر می شود. به طور پیش فرض، آنها به ترتیب در ابتدا به ظرف فلکس اضافه می شوند.

ارزش های

.flex آیتم (سفارش:<целое число>; }

عناصر Flex را می توان با استفاده از این ویژگی ساده بدون تغییر کد HTML مرتب کرد.

مقدار پیش فرض: 0.

انعطاف پذیری

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

ارزش های

.flex-item (Flex-grow:<число>; }

اگر تمام عناصر فلکس دارای همان ارزش انعطاف پذیری هستند، تمام عناصر اندازه مشابهی را در ظرف داشته باشند.

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

مقدار پیش فرض: 0.

انعطاف پذیر

flex-Shrink یک ضریب فشرده سازی را تعیین می کند که تعیین می کند که چقدر عنصر فلکس نسبت به عناصر انعطاف پذیر باقی مانده در ظرف انعطاف پذیر، در طول توزیع فضای آزاد منفی فشرده می شود.

ارزش های

.flex مورد (Flex-Shrink:<число>; }

به طور پیش فرض، تمام عناصر فلکس را می توان فشرده سازی کرد، اما اگر ما مقدار انعطاف پذیری انعطاف پذیر (بدون فشرده سازی) را تنظیم کنیم، سپس عناصر اندازه اصلی را حفظ می کنند.

مقدار پیش فرض: 1.

اعداد منفی غیر قابل قبول هستند

پایه فلج

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

ارزش های

.flex-item (flex-base: auto |<ширина>; }

flex-base برای عنصر فلکس چهارم مشخص شده و اندازه اولیه آن را دیکته می کند.

مقدار پیش فرض: خودکار.

خمیدگی

این ویژگی کاهش خواص فلکس رشد، انعطاف پذیری و انعطاف پذیری است. محصول مقادیر دیگر نیز می تواند به صورت خودکار (1 1 خودکار) و هیچکدام (0 0 خودکار) نصب شود.

ارزش های

.flex-item (flex: none | auto | [ ? || ]; }

مقدار پیش فرض: 0 1 خودکار.

W3C توصیه می کند با استفاده از ویژگی های فلکس اختصار، به جای خواص فردی، از آنجایی که Flex به درستی هر اجزای نامشخص را برای استفاده معمول تنظیم می کند، توصیه می شود.

هماهنگ کردن خود

اموال خود را به شما اجازه می دهد تا هماهنگی پیش فرض (یا مقدار مشخص شده از طریق آیتم های مشابه) را برای عناصر انعطاف پذیر فرد لغو کنید. برای درک ارزش های موجود، به توضیحات مشابهی برای ظروف فلکس مراجعه کنید.

ارزش های

.flex-item (align-self: auto | flex-start | Flex-end | مرکز | پایه | کشش؛)

برای عناصر Flex سوم و چهارم، هماهنگی از طریق مالکیت هماهنگ شده است.

مدول flexbox-leuauta (جعبه انعطاف پذیر - "بلوک انعطاف پذیر"، در این لحظه توصیه های نامزدی W3C) این کار را برای ارائه یک روش کارآمد تر برای ارائه، سطح بندی و توزیع فضای آزاد بین عناصر در ظرف، حتی زمانی که اندازه آنها ناشناخته است و / یا پویا (از این رو کلمه "انعطاف پذیر") را ارائه می دهد.

ایده اصلی Flex-Guard در ظرف با توانایی تغییر عرض / ارتفاع (و سفارش) عناصر آن برای بهترین پر کردن فضا (در بیشتر موارد - برای پشتیبانی از انواع نمایش ها و صفحه نمایش ها ) مخزن فلکس عناصر را برای پر کردن فضای آزاد گسترش می دهد یا آنها را فشرده می کند تا از مرز خارج شود.

مهمترین، Flexbox-Leiaut به جهت بستگی ندارد، در مقایسه با لنت های معمول (بلوک، به صورت عمودی، و عناصر درونی به صورت افقی). در حالی که Leiaut معمولی برای صفحات وب عالی است، برای پشتیبانی از برنامه های بزرگ یا پیچیده، انعطاف پذیری (بدون Canalybur) وجود ندارد (به ویژه هنگامی که آن را به تغییر جهت گیری صفحه نمایش، تغییر اندازه، کشش، فشرده سازی، فشرده سازی و غیره).

اظهار نظر: Flexbox-Leuaout برای قطعات کامپوزیتی از نرم افزار و Leuautics در مقیاس کوچک مناسب است، در حالی که شبکه برای مقیاس های بزرگ لایان مورد استفاده قرار می گیرد.

مبانی

زیرا Flexbox یک ماژول کامل است، و نه تنها یک ملک واحد، آن را ترکیب بسیاری از خواص. بعضی از آنها باید به کانتینر (عنصر والدین، به اصطلاح "اعمال شوند مخزن انعطاف پذیر)، در حالی که خواص دیگر به عناصر کودک اعمال می شود یا عناصر انعطاف پذیر.

اگر Leuaout معمولی بر اساس دستورالعمل های بلوک و عناصر درونی است، Flex-Liaut بر اساس "Flex-Flow Flow" است. این طرح را از مشخصات توضیح دهید که ایده اصلی Flex-Leuaitov را توضیح دهید.

اکثر عناصر نیز توزیع می شوند محور اصلی (از جانب شروع اصلی قبل از پایان اصلی) یا همراه محور عرضی (از جانب شروع متقابل قبل از متقاطع).

  • محور اصلی - محور اصلی که در آن عناصر انعطاف پذیر قرار دارند. توجه داشته باشید، لزوما افقی نیست، همه چیز بستگی به ویژگی Flex-Direction دارد (نگاه کنید به زیر).
  • شروع اصلی | پایان اصلی - عناصر فلکس در یک ظرف از موقعیت اصلی شروع به موقعیت اصلی قرار می گیرند.
  • اندازه اصلی - عرض یا ارتفاع عنصر فلکس بسته به مقدار اولیه انتخاب شده. ارزش اصلی می تواند هر دو عرض یا ارتفاع عنصر باشد.
  • محور صلیب - محور عرضی عمود بر اصل اصلی. جهت آن بستگی به جهت محور اصلی دارد.
  • شروع متقابل | متقاطع - ردیف های فلکس با عناصر پر می شوند و در یک ظرف از موقعیت متقابل شروع به موقعیت متقابل قرار می گیرند.
  • اندازه متقابل - عرض یا ارتفاع عنصر فلکس، بسته به اندازه ابعاد، برابر با این مقدار است. این ویژگی با عرض یا ارتفاع مورد بسته به اندازه ابعاد همخوانی دارد.

خواص

صفحه نمایش: Flex | inline-flex؛

آن را به آن اعمال می شود:

کانتینر فلکس (درون خطی یا بلوک، بسته به مقدار انتخاب شده) را تعیین می کند، زمینه فلکس را برای تمام فرزندان فوری آن متصل می کند.

صفحه نمایش: مقادیر دیگر | فلکس | inline-flex؛

یادت باشه:

  • ستون CSS با یک ظرف انعطاف پذیر کار نمی کند
  • شناور، واضح و عمودی با عناصر فلکس کار نمی کند

جهت فلکس

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

محور اصلی محور اصلی را تعیین می کند، در نتیجه تعیین جهت عناصر انعطاف پذیر در ظرف قرار می گیرد.

Flex-direction: ردیف | ردیف معکوس | ستون | ستون معکوس
  • ردیف (به طور پیش فرض): از چپ به راست برای LTR، راست به چپ برای RTL؛
  • ردیف معکوس: راست چپ برای LTR، از چپ به راست برای RTL؛
  • ستون: شبیه به ردیف، بالا پایین؛
  • ستون معکوس: شبیه به ردیف معکوس، پایین به بالا.

انعطاف پذیر

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

تعیین می کند که آیا ظرف یک خط یا چند خطی خواهد بود، و همچنین جهت محور عرضی تعیین مسیر که در آن خطوط جدید قرار می گیرد.

Flex-Wrap: Nowrap | بسته بندی | بسته بندی معکوس
  • nowRap (به طور پیش فرض): تک خط / از چپ به راست برای LTR، راست به سمت چپ برای RTL؛
  • بسته بندی: چند خط / از چپ به راست برای LTR، راست به چپ برای RTL؛
  • بسته بندی معکوس: چند خط / راست چپ برای LTR، از چپ به راست برای RTL.

جریان انعطاف پذیر

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

این کاهش خواص جهت فلکس و انعطاف پذیری است که با هم محور اصلی و عرضی را تعریف می کنند. به طور پیش فرض، مقدار NOWRAP ردیف را می گیرد.

Flex-Flow:<"flex-direction" > || <"flex-wrap" >

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

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

: Flex-Start | Flex-end | مرکز | فاصله بین | فضای اطراف
  • flex-Start: عناصر به ابتدای خط منتقل می شوند؛
  • flex-end: عناصر به پایان رشته منتقل می شوند؛
  • مرکز: عناصر در مرکز خط هماهنگ شده اند؛
  • فضای بین: عناصر به طور مساوی توزیع می شوند (اولین عنصر در ابتدای خط، آخرین - در پایان)؛
  • فضای اطراف: عناصر به طور مساوی با فاصله مساوی بین خود و مرزهای رشته توزیع می شوند.

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

رفتار پیش فرض را برای عناصر فلکس تعریف می کند، نسبت به محور عرضی در خط فعلی است. این نسخه از توجیه محتوا برای محور عرضی (عمود بر اصلی) را در نظر بگیرید.

: Flex-Start | Flex-end | مرکز | پایه | کش آمدن.
  • flex-Start: مرز شروع متقابل برای اقلام در موقعیت متقابل قرار دارد؛
  • flex-end: مرز متقابل برای اقلام در موقعیت متقابل قرار دارد؛
  • مرکز: عناصر در مرکز محور عرضی هماهنگ شده اند؛
  • پایه: عناصر برای پایه خود هماهنگ هستند؛
  • کشش (به طور پیش فرض): عناصر کشش، پر کردن ظرف (با توجه به حداقل عرض / حداکثر عرض).

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

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

اظهار نظر: این ویژگی با FlexBox تک خط کار نمی کند.

: Flex-Start | Flex-end | مرکز | فاصله بین | فضای اطراف | کش آمدن.
  • flex-Start: خطوط نسبت به شروع ظرف هم تراز می شوند؛
  • flex-end: ردیف ها نسبت به انتهای ظرف هم تراز می شوند؛
  • مرکز: ردیف ها در مرکز کانتینر هماهنگ می شوند؛
  • فاصله بین: ردیف ها به طور مساوی توزیع می شوند (خط اول در ابتدای خط، دومی در پایان است)؛
  • فضای اطراف: ردیف ها به طور مساوی با فاصله مساوی توزیع می شوند؛
  • کشش (به طور پیش فرض): ردیف کشش، پر کردن فضای آزاد است.

سفارش

آن را به آن اعمال می شود:

به طور پیش فرض، عناصر Flex در سفارش اصلی آن قرار دارند. با این حال، املاک سفارش می تواند نظم مکان خود را در ظرف کنترل کند.

سفارش:<integer\u003e

انعطاف پذیری

آن را به آن اعمال می شود: عنصر عنصر دختر / فلکس.

تعیین کننده عنصر فلکس توانایی "رشد" در صورت لزوم. یک مقدار نمایه دار را می گیرد که به عنوان یک نسبت به آن عمل می کند. این تعیین می کند که چه مقدار از یک فضای آزاد داخل ظرف یک عنصر ممکن است اشغال شود.

اگر همه اقلام دارای یک ملک فلکس رشد به عنوان 1، پس هر یک از نسل ها همان اندازه را در داخل ظرف دریافت می کنند. اگر یکی از فرزندان را به 2 تنظیم کنید، آن را دو برابر فضای بیشتری نسبت به دیگران خواهید گرفت.

انعطاف پذیری:<شماره\u003e (به طور پیش فرض 0)

انعطاف پذیر

آن را به آن اعمال می شود: عنصر عنصر دختر / فلکس.

تعیین کننده عنصر فلکس توانایی فشرده سازی در صورت لزوم.

Flex-shrink: (پیش فرض 1)

اعداد منفی پذیرفته نمی شوند.

پایه فلج

آن را به آن اعمال می شود: عنصر عنصر دختر / فلکس.

اندازه پیش فرض برای عنصر قبل از توزیع فضا در ظرف تعیین می شود.

مبنای انعطاف پذیر:<طول\u003e | خودکار (خودکار به طور پیش فرض)

خمیدگی

آن را به آن اعمال می شود: عنصر عنصر دختر / فلکس.

این کاهش برای رشد فلکس رشد، انعطاف پذیر و انعطاف پذیر است. پارامترهای دوم و سوم (انعطاف پذیری کوچک، فلکس) اختیاری هستند. مقدار پیش فرض 0 1 خودکار است.

فلکس: هیچ | [<"flex-grow" > <"flex-shrink" >? || <"flex-basis" > ]

هماهنگ کردن خود

آن را به آن اعمال می شود: عنصر عنصر دختر / فلکس.

به شما اجازه می دهد تا تنظیم مجدد پیش فرض یا در موارد مشابه، برای عناصر انعطاف پذیری فردی را لغو کنید.

برای درک بهتر از ارزش های موجود، به توضیحات اموال align-items مراجعه کنید.

align-self: auto | Flex-Start | Flex-end | مرکز | پایه | کش آمدن.

مثال ها

بیایید با یک مثال بسیار ساده، بسیار ساده شروع کنیم، تقریبا هر روز اتفاق می افتد: تراز دقیقا در مرکز. اگر از FlexBox استفاده می کنید، چیزی ساده تر نیست.

.Parent (نمایش: فلکس، ارتفاع: 300 پیکسل؛ / * یا هر چیزی * / ) .Child (عرض: 100px؛ / * یا هر چیزی * / ارتفاع: 100px؛ / * یا هر چیزی * / حاشیه: خودکار؛ / * شعبده بازي! * /)

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

حالا از برخی خواص استفاده کنید. مجموعه ای از 6 عنصر اندازه ثابت (برای زیبایی)، اما با توانایی تغییر اندازه ظرف. ما می خواهیم به طور افقی به طور افقی توزیع کنیم، به طوری که زمانی که پنجره مرورگر تغییر اندازه داده شود، همه چیز خوب بود (بدون @ رسانه ضبط شده!).

.flex-container ( / * برای اولین بار یک زمینه Flex-Context * / صفحه نمایش: Flex؛ / * در حال حاضر ما جهت جریان را تعریف می کنیم و اینکه آیا ما می خواهیم عناصر را به یک رشته جدید منتقل کنیم * به یاد داشته باشید که این همانند: * Flex-Direct: ردیف؛ * Flex-Wrap: بسته بندی؛ * / Flex-Flow: بسته بندی ردیف؛ / * حالا ما تعریف می کنیم که چگونه فضا * / : فضای اطراف؛ )

آماده. هر چیز دیگری موضوع ثبت نام است. در زیر کدپن واقع شده است، که این مثال را نشان می دهد. مطمئن باشید که سعی کنید پنجره مرورگر را بکشید / فشار دهید و ببینید چه اتفاقی می افتد.

این قلم را بررسی کن

بیایید هر چیز دیگری را امتحان کنیم تصور کنید که ما نیاز به یک ناوبری در لبه سمت راست در بالای سایت ما داریم، اما ما می خواهیم آن را در مرکز صفحه نمایش های متوسط \u200b\u200bقرار دهیم و به یک ستون کوچک تبدیل شویم. همه چیز به اندازه کافی ساده است.

/ * صفحه نمایش بزرگ * / .Navigation (نمایش: Flex؛ Flex-Flow: ROW WRAP؛ / * تغییر عناصر در انتهای خط در محور اصلی * / : Flex-End؛ ) media همه و (حداکثر عرض: 800px) (.navigation ( / * برای صفحه نمایش های متوسط، ما ناوبری را در مرکز قرار می دهیم، به طور مساوی توزیع فضای آزاد بین عناصر * / : فضای اطراف؛ ) / * صفحه نمایش کوچک * / media همه و (حداکثر عرض: 500px) (.navigation ( / * در صفحه های کوچک به جای یک رشته ما عناصر در ستون * / Flex-Direction: ستون؛ )) این قلم را چک کنید!

بیایید چیزی بهتر را امتحان کنیم و با انعطاف پذیری عناصر انعطاف پذیر بازی کنیم! چگونه در مورد گرا دستگاه های موبایل طرح سه ضلعی با کلاه کامل و زیرزمین؟ و دستور دیگری از محل.

.Wrapper (صفحه نمایش: Flex؛ Flex-Flow: Row Wrap؛) / * ما تمام عناصر 100٪ عرض * / .erader، .main، .nav، .aside، .footer (فلکس: 1 100٪؛) / * در این مورد، ما به دستور اصلی جهت جهت گیری در * دستگاه های تلفن همراه تکیه می کنیم: * 1. هدر * 2. NAV * 3. اصلی * 4. پایین * 5. Footer * / / * صفحه نمایش های متوسط \u200b\u200b* / media همه و (min-width: 600px) ( / * هر دو SageBar در یک خط قرار دارند * / .aside (flex: 1 خودکار؛)) / * صفحه نمایش بزرگ * / media همه و (min-width: 800px) ( / * ما عناصر را تغییر می دهیم. aside-1 i.main، و همچنین اطلاعات * Element.main را دو برابر بیشتر از Sidbars. * / .main (flex: 2 0px؛) .aside-1 (سفارش: 1؛) .main (سفارش: 2؛) .aside-2 (سفارش: 3؛) .footer (سفارش: 4؛)

اگر شما کوتاه بگویید، طرح با FlexBox به ما راه حل های ساده ای از یک بار کارهای دشوار می دهد. به عنوان مثال، هنگامی که شما باید عنصر عمودی را هماهنگ کنید، یا زیرزمین را به پایین صفحه فشار دهید یا به سادگی چندین بلوک را به یک ردیف وارد کنید تا همه چیز فضای آزاد را اشغال کند. چنین وظایفی بدون انعطاف پذیری حل می شود. اما به عنوان یک قاعده، این راه حل ها بیشتر شبیه به "crutches" هستند - پذیرش استفاده از CSS در نظر گرفته نشده است. در حالی که با FlexBox، چنین وظایفی دقیقا همانطور که مدل فلکس تفکر می شود حل می شود.

CSS ماژول طرح بندی جعبه انعطاف پذیر CSS (ماژول CSS برای ماژول ها با بلوک های انعطاف پذیر)، FlexBox کوتاه، ایجاد شده برای حذف نقص در هنگام ایجاد انواع ساختارهای HTML، از جمله تطبیق در عرض های مختلف و ارتفاع، و طرح بندی منطقی و ساده را ایجاد کنید. و رویکرد منطقی، به عنوان یک قاعده، در مکان های غیر منتظره کار می کند، جایی که نتیجه بررسی نشده است - منطق ما!

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

دانش عمومی

Flexbox شامل یک ظرف و عناصر کودک آن (عناصر انعطاف پذیر) است.

برای شامل flexbox، هر عنصر HTML کافی برای اختصاص دادن اموال CSS: FLEX؛ یا صفحه نمایش: inline-flex؛ .

1
2

پس از روشن کردن خواص فلکس، دو محور در داخل ظرف ایجاد می شوند: اصلی و عرضی (عمود بر (⊥)، محور صلیب). تمام عناصر توپی (سطح اول) بر روی محور اصلی ساخته شده اند. به طور پیش فرض، محور اصلی افقی است و جهت چپ به راست (→)، و محور صلیب به ترتیب عمودی و از بالا به پایین (↓) هدایت می شود.

محور اصلی و صلیب را می توان در مکان ها تغییر داد، سپس عناصر در بالا (↓) قرار می گیرند و زمانی که آنها را به ارتفاع متصل می کنند، آنها از سمت چپ به راست حرکت می کنند (→) - یعنی محورها به سادگی در مکان ها تغییر می کنند . در همان زمان، آغاز و پایان محل عناصر تغییر نمی کند - فقط جهت (محور) تغییر! به همین دلیل است که شما باید محور داخل ظرف را تصور کنید. با این حال، لازم نیست فکر کنید که برخی از محورهای فیزیکی وجود دارد و آنها بر چیزی تاثیر می گذارد. محور در اینجا تنها جهت حرکت عناصر داخل ظرف است. به عنوان مثال، اگر ما نشان داد که هماهنگی عناصر در مرکز محور اصلی را نشان دادیم و سپس جهت این محور اصلی را تغییر داد، آن را تغییر و هماهنگی: عناصر در وسط افقی، و فولاد در وسط عمودی .. . به عنوان مثال را ببینید

یکی دیگر از ویژگی های مهم جعبه فلکس، حضور یک ردیف در جهت عرضی است. برای درک آنچه که ما در مورد آن صحبت می کنیم، تصور کنیم که یک محور افقی اصلی، بسیاری از عناصر وجود دارد و آنها را به ظرف صعود نمی کنند، بنابراین آنها به ردیف دیگری می روند. کسانی که. ظرف به نظر می رسد مانند این: ظرف، در داخل آن دو ردیف، در هر ردیف برای چندین عنصر. ارایه شده؟ در حال حاضر به یاد داشته باشید که ما می توانیم به طور عمودی نه تنها عناصر، بلکه ردیف! چگونه آن را به خوبی در مثال از اموال قابل مشاهده است. و به همین ترتیب به نظر می رسد به صورت مقدم:

خواص CSSکه می تواند بر مدل ساخت طرح تاثیر بگذارد: شناور، روشن، عمودی، ستون ها در طراحی فلکس کار نمی کنند. از مدل دیگری برای ساخت یک طرح استفاده می کند و این خواص CSS به سادگی نادیده گرفته می شود.

خواص CSS FlexBox

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

برای ظرف

نمایش دادن:

شامل اموال فلکس برای مورد. تحت این اموال، عنصر سرمایه گذاری شده در آن سقوط می کند: تنها فرزندان از سطح اول تحت تاثیر قرار می گیرند - آنها تبدیل به عناصر از ظرف فلکس می شوند.

  • خمیدگی - عنصر به کل عرض کشیده می شود و فضای کامل خود را در میان بلوک های اطراف آن دارد. قایقرانی در ابتدا و در پایان بلوک اتفاق می افتد.
  • inline-flex - عنصر توسط عناصر دیگر ساده شده است. در این مورد، بخش داخلی آن به عنوان یک عنصر بلوک فرمت شده است، و عنصر خود را مانند ساخته شده است.

flex و Inline-Flex در این واقعیت متفاوت است که متفاوت با عناصر اطراف آن، مانند صفحه نمایش، بلوک و نمایشگر: بلوک درون خطی متفاوت است.

جهت فلکس:

جهت محور اصلی ظرف را تغییر می دهد. محور عرضی بر این اساس تغییر می کند.

  • ردیف (به طور پیش فرض) - جهت عناصر چپ به راست (→)
  • ستون - جهت عناصر از بالا به پایین (↓)
  • ردیف معکوس - جهت عناصر در سمت راست سمت چپ (←)
  • ستون معکوس - جهت عناصر پایین به بالا ()
Flex-Wrap:

انتقال عناصری را که به ظرف متصل می شود، مدیریت می کند.

  • nowRap (به طور پیش فرض) - عناصر توپی در یک ردیف (در طول جهت \u003d ردیف) یا در یک ستون (در طول جهت \u003d ستون) قرار دارند، صرف نظر از اینکه آیا آنها در ظرف قرار می گیرند یا نه.
  • بسته بندی کردن. - شامل انتقال اقلام به ردیف بعدی اگر آنها در ظرف قرار نمی گیرند. این شامل حرکت عناصر در محور عرضی است.
  • بسته بندی معکوس - همچنین این بسته بندی تنها انتقال پایین نخواهد بود، و بالا (در جهت مخالف).
Flex-Flow: پوشش جهت

ترکیبی از هر دو جهت فلکس و خواص Flex-wrap. آنها اغلب با هم استفاده می شوند، بنابراین اموال Flex-flow برای نوشتن کد کمتر ایجاد شده است.

flex-Flow مقادیر دو خواص را می پذیرد، که توسط یک فضای جدا شده است. یا شما می توانید یک مقدار از هر ملک را مشخص کنید.

/ * فقط Flex-Direction * / Flex-Flow: ROW؛ Flex-Flow: Row-Reverse؛ Flex-Flow: ستون؛ Flex-Flow: ستون معکوس؛ / * فقط Flex-Wrap * / Flex-Flow: NowRap؛ Flex-Flow: Wrap؛ Flex-Flow: Wrap-Reverse؛ / * بلافاصله هر دو معانی: Flex-Direction و Flex-wrap * / Flex-Flow: Row NowRap؛ Flex-Flow: بسته بندی ستون؛ Flex-Flow: Column-Reverse Wrap-Reverse؛ توجیه محتوا:

عناصر را در محور اصلی هماهنگ می کند: اگر جهت \u003d ردیف، سپس به صورت افقی، و اگر جهت \u003d ستون، سپس عمودی.

  • flex-Start (به طور پیش فرض) - عناصر از ابتدا می روند (در پایان ممکن است یک مکان وجود داشته باشد).
  • انعطاف پذیری - عناصر به پایان می رسد با پایان (محل در ابتدا باقی خواهد ماند)
  • مرکز - در مرکز (محل باقی می ماند چپ و راست)
  • فاصله بین - عناصر شدید به لبه ها فشار می آورند (محل بین عناصر به طور مساوی توزیع می شود)
  • فضای اطراف فضای آزاد به طور مساوی بین عناصر توزیع می شود (عناصر شدید به لبه ها فشار نمی آورند). فضای بین لبه کانتینر و عناصر شدید دو برابر کمتر از فضای بین عناصر در وسط ردیف خواهد بود.
  • فضا به طور مساوی
هماهنگی محتوا:

صفوف را که در آن عناصر در محور عرضی قرار دارند، هماهنگ می کند. همانند محتوای توجیه فقط برای محور مخالف.

توجه: کار می کند زمانی که حداقل 2 ردیف وجود دارد، I.E. اگر تنها 1 ردیف وجود نداشته باشد، اتفاق نمی افتد.

کسانی که. اگر Flex-Direction: ردیف، این ویژگی، ردیف های نامرئی را به صورت عمودی تنظیم می کند. مهم این است که توجه داشته باشید که ارتفاع بلوک باید به شدت تنظیم شود و باید بیشتر از ارتفاع سری باشد، در غیر این صورت ردیف ها ظرف را کشش می دهند و هماهنگی آنها معنای آن را از دست می دهد، زیرا هیچ فضای آزاد بین آنها وجود ندارد. . اما هنگامی که جهت فلکس جهت: ستون، سپس ردیف ها به صورت افقی حرکت می کنند و عرض ظرف تقریبا همیشه بزرگتر از عرض سری است و هماهنگی ردیف ها بلافاصله معنی را بدست می آورد ...

  • کشش (به طور پیش فرض) - ردیف کشش رشته به طور کامل
  • flex-Start - ردیف ها در بالای ظرف دسته بندی می شوند (ممکن است در انتهای یک مکان وجود داشته باشد).
  • انعطاف پذیری - ردیف ها در پایین ظرف دسته بندی می شوند (محل در ابتدا باقی خواهد ماند)
  • مرکز - ردیف ها در مرکز کانتینر گروه بندی می شوند (محل در لبه ها باقی می ماند)
  • فاصله بین - ردیف های شدید به سمت لبه ها فشار می آورند (محل بین ردیف ها به طور مساوی توزیع می شود)
  • فضای اطراف - فضای آزاد به طور مساوی بین ردیف ها توزیع می شود (عناصر شدید به سمت لبه ها فشار نمی آورند). فضای بین لبه کانتینر و عناصر شدید دو برابر کمتر از فضای بین عناصر در وسط ردیف خواهد بود.
  • فضا به طور مساوی - همچنین فضای اطراف، تنها فاصله در عناصر شدید به لبه های کانتینر همانند بین عناصر است.
align-items:

عناصر را در محور عرضی داخل ردیف قرار می دهد (خط نامرئی). کسانی که. ردیف خود را از طریق محتوای هماهنگ، و عناصر در این ردیف ها (رشته ها) از طریق align-items و این همه در محور عرضی هماهنگ شده است. چنین جداسازی از محور اصلی وجود ندارد، هیچ مفاهیمی از سری ها وجود ندارد و عناصر از طریق توجیه محتوا هماهنگ نیستند.

  • کشش (به طور پیش فرض) - عناصر کشش رشته را به طور کامل پر می کنند
  • flex-Start - عناصر به ابتدای ردیف فشار داده می شوند
  • انعطاف پذیری - عناصر در برابر انتهای ردیف فشار داده می شوند
  • مرکز - عناصر در مرکز ردیف قرار می گیرند
  • پایه - عناصر توسط متن پایه تراز شده اند

برای عناصر کانتینر

انعطاف پذیری:

عامل افزایش عنصر را در حضور یک فضای آزاد در ظرف مشخص می کند. پیش فرض Flex-Grow: 0 I.E. هیچ عنصر نباید یک فضای آزاد را در ظرف افزایش دهد.

پیش فرض Flex-Grow: 0

  • اگر تمام عناصر نشان دهنده Flex-Grow: 1، سپس همه آنها به طور مساوی کشش می دهند و همه فضای آزاد را در ظرف پر می کنند.
  • اگر یکی از عناصر نشان دهنده Flex-Grow: 1 باشد، پس از آن تمام فضای آزاد را در ظرف و هم ترازی پر می کند از طریق توجیه کار محتوا قادر به کار نخواهد بود: هیچ چیز برای ایجاد فضای آزاد وجود ندارد ...
  • هنگامی که Flex-Grow: 1. اگر یکی از آنها دارای Flex-Grow: 2 باشد، 2 برابر بیشتر از هر کس دیگری خواهد بود
  • اگر تمام بلوک های فلکس داخل ظرف انعطاف پذیر فلکس رشد کنند: 3، سپس آنها همان اندازه خواهند بود
  • با Flex-Grow: 3. اگر یکی از آنها دارای Flex-Grow: 12 باشد، 4 برابر بیشتر از هر کس دیگری خواهد بود

چگونه کار می کند؟ فرض کنید کانتینر دارای عرض 500 پیکسل است و شامل دو عنصر است که هر کدام دارای عرض پایه 100px است. بنابراین، 300 پیکسل آزاد در ظرف باقی می ماند. در حال حاضر، اگر شما Flex-Grow را مشخص می کنید: 2 عنصر اول؛ ، و دوم فلکس رشد: 1؛ بلوک ها کل عرض کانتینر را دریافت می کنند و عرض بلوک اول 300 پیکسل و 200px دوم خواهد بود. این به این واقعیت توضیح داده شده است که فضای آزاد 300px موجود در ظرف بین عناصر در نسبت 2: 1، + 200px از اولین و + 100px دوم توزیع شده است.

توجه: در ارزش شما می توانید مشخص کنید اعداد کسری، به عنوان مثال: 0.5 - Flex-Grow: 0.5

Flex-shrink:

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

پیش فرض Flex-Shrink: 1

فرض کنید کانتینر دارای عرض 600 پیکسل است و شامل دو عنصر است که هر کدام دارای عرض 300 پیکسل - Flex-base: 300px؛ . کسانی که. دو عنصر به طور کامل ظرف را پر می کنند. عنصر اول نشان می دهد Flex-Shrink: 2؛ ، و دوم انعطاف پذیری: 1؛ . در حال حاضر کاهش عرض ظرف در 300px، I.E. عناصر باید با 300px در داخل ظرف قرار بگیرند. آنها در نسبت 2: 1 فشرده می شوند، I.E. واحد اول به 200px پیوست و دوم به 100px و ابعاد جدید عناصر 100px و 200px خواهد بود.

توجه: در ارزش شما می توانید اعداد کسری را مشخص کنید، به عنوان مثال: 0.5 - Flex-Shrink: 0.5

مبنای انعطاف پذیر:

عرض پایه عنصر را تنظیم می کند - عرض قبل از شرایط باقی مانده که بر روی عرض عنصر تاثیر می گذارد محاسبه می شود. مقدار را می توان در PX، EM، REM،٪، VW، VH، و غیره مشخص کرد عرض نهایی به عرض پایه بستگی دارد و مقادیر فلکس رشد، انعطاف پذیری، انعطاف پذیری و محتوای داخل بلوک. با AUTO، عنصر یک عرض اساسی نسبت به محتوای درون آن دریافت می کند.

پیش فرض: خودکار

گاهی اوقات بهتر است که عرض عنصر را از طریق اموال معمولی عرض نصب کنید. به عنوان مثال، عرض: 50٪؛ به این معنی است که عنصر داخل ظرف دقیقا 50٪ خواهد بود، اما خواص فلکس رشد و انعطاف پذیری نیز کار خواهد کرد. این ممکن است لازم باشد زمانی که عنصر توسط محتوا درون آن کشیده شود، بیشتر به صورت فلسطینی مشخص شده است. مثال.

flex-base "سخت" خواهد بود اگر تنظیم مجدد کششی و فشرده سازی: Flex Base: 200px؛ Flex-grow: 0؛ Flex-shrink: 0؛ . همه اینها را می توان به عنوان فلکس نوشته شده است: 0 0 200px؛ .

فلکس: (رشد کوچک)

ضبط کوتاه سه ویژگی: انعطاف پذیری انعطاف پذیر فلکس

پیش فرض: فلکس: 0 1 خودکار

با این حال، شما می توانید یکی، و دو ارزش را مشخص کنید:

فلکس: هیچکدام؛ / * 0 0 خودکار * / / * شماره * / flex: 2؛ / * Flex-grow (فلکسل بر اساس 0) * / / * شماره * / flex: 10em؛ / * flex-base: 10em * / flex: 30px؛ / * فلاش پایه: 30px * / flex: خودکار؛ / * flex-base: auto * / flex: محتوا؛ / * flex-base: content * / flex: 1 30px؛ / * فلکس رشد و فلسفر * / flex: 2 2؛ / * Flex-grow و انعطاف پذیری کاهش می یابد (فلکس پایه 0) * / فلکس: 2 10٪؛ / * فلکس رشد و انعطاف پذیر و انعطاف پذیر و انعطاف پذیر * / هماهنگی خود:

به شما اجازه می دهد تا اموال align-items را تغییر دهید، فقط برای یک مورد جداگانه.

پیش فرض: از کانتینر align

  • کش آمدن. - عنصر کشش رشته را به طور کامل پر می کند
  • flex-Start - عنصر به ابتدای خط فشار داده می شود
  • انعطاف پذیری - عنصر به سمت انتهای رشته فشار داده می شود
  • مرکز - عنصر در مرکز خط قرار دارد
  • پایه - عنصر توسط خط پایه متن هماهنگ شده است

سفارش:

به شما اجازه می دهد سفارش (موقعیت، موقعیت) عنصر را در ردیف عمومی تغییر دهید.

به طور پیش فرض: سفارش: 0

به طور پیش فرض، عناصر سفارش دارند: 0 و به ترتیب ظاهر خود را در کد HTML و جهت ردیف قرار دهید. اما اگر ارزش اموال سفارش را تغییر دهید، اقلام به ترتیب ارزش ها ساخته می شوند: -1 0 1 2 3 .... به عنوان مثال، اگر یکی از موارد نشان دهنده سفارش باشد: 1، سپس شما ابتدا به صفر بروید، و سپس یک عنصر از 1.

بنابراین ممکن است، به عنوان مثال، یک عنصر اول برای تبدیل شدن به پایان، در حالی که تغییر جهت حرکت عناصر دیگر و یا کد HTML.

یادداشت

تفاوت بین انعطاف پذیری از عرض چیست؟

زیر تفاوت های مهم بین فلسطینی و عرض / ارتفاع:

    پایه فقط برای محور اصلی کار می کند. این به این معنی است که وقتی Flex-Direction: ROW Flex-base، عرض (عرض) را کنترل می کند، و هنگامی که Flex-Direction: ستون ارتفاع (ارتفاع) را کنترل می کند. .

    پایه فقط به عناصر انعطاف پذیر اعمال می شود. بنابراین اگر انعطاف پذیری را در ظرف غیرفعال کنید، این ویژگی اثر نخواهد داشت.

    عناصر مطلق ظرف در طراحی فلکس شرکت نمی کنند ... و به همین دلیل فلکی بر اساس عناصر ظرف فلکس تاثیر نمی گذارد، اگر آنها کاملا موقعیتی قرار گیرند: مطلق. آنها باید عرض / ارتفاع را مشخص کنند.

  • هنگام استفاده از خواص فلکس 3 مقادیر (Flex-grow / flex-shrink / flex-base)، شما می توانید کوتاه و نوشتن کوتاه، و برای رشد و یا کاهش به شما نیاز به نوشتن به طور جداگانه. به عنوان مثال: فلکس: 0 0 50٪ \u003d\u003d عرض: 50٪؛ Flex-shrink: 0؛ . گاهی اوقات این ناخوشایند است.

در صورت امکان، هنوز هم به صورت فلکی ترجیح داده می شود. استفاده از عرض تنها زمانی که فلسفیم مناسب نیست.

تفاوت انعطاف پذیری از عرض - اشکال یا فود؟

محتوای درون عنصر فلکس آن را کاهش می دهد و نمی تواند فراتر از حد خود باشد. با این حال، اگر شما عرض را از طریق عرض یا حداکثر عرض تنظیم کنید، و نه انعطاف پذیری، عنصر داخل ظروف فلکس قادر به فراتر از این ظرف خواهد بود (گاهی اوقات شما به این رفتار نیاز دارید). مثال:

نمونه هایی از طرح انعطاف پذیر

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

# 1 مثال ساده با تراز عمودی و افقی

بیایید با ساده ترین مثال شروع کنیم - به طور عمودی و به صورت عمودی و افقی به طور همزمان و در هر ارتفاع بلوک، حتی لاستیک.

متن در وسط

یا به همین ترتیب، بدون بلوک در داخل:

متن در وسط

# 1.2 جدایی (GAP) بین عناصر بلوک فلکس

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

# 2 منوی تطبیقی \u200b\u200bدر Flex

یک منو را در بالای صفحه قرار دهید. در یک صفحه گسترده باید درست باشد. به طور متوسط، در وسط هماهنگ شده است. و در یک عنصر کوچک باید در یک خط جدید باشد.

# 3 انطباق 3 ستون

این مثال نشان می دهد که چگونه به سرعت و به راحتی 3 ستون را ایجاد می کند که هنگام محدود شدن، به 2 و سپس در 1 تبدیل می شود.

لطفا توجه داشته باشید که این می تواند بدون استفاده از قوانین رسانه ای، همه در Flex انجام شود.

1
2
3
4
5
6

به JSFiddle.net بروید و عرض بخش "نتیجه" را تغییر دهید

# 4 بلوک های سازگار در Flex

فرض کنید ما باید 3 بلوک، یک بزرگ و دو کوچک را از بین ببریم. در عین حال لازم است که بلوک ها به صفحه های کوچک متصل شوند. ساخت:

1
2
3

به JSFiddle.net بروید و عرض بخش "نتیجه" را تغییر دهید

# 5 گالری در Flex و Transition

این مثال نشان می دهد که چقدر سریع می توانید آکوردئون چشم را با تصاویر در Flex ایجاد کنید. توجه به اموال انتقال برای انعطاف پذیری.

# 6 Flex در Flex (فقط یک مثال)

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

برای حل این مشکل، بلوک های خود را با انعطاف پذیری کشیده می شوند و حداکثر عرض ممکن نصب شده است. هر واحد داخلی نیز انعطاف پذیری با طراحی، با یک جهت فلکس: ستون؛ و عنصر در وسط (جایی که متن قرار دارد) کشش انعطاف پذیر است: 1؛ برای پر کردن تمام فضای آزاد، نتیجه به دست آمده است - متن با یک خط شروع شد ...

نمونه های بیشتر

پشتیبانی مرورگر - 98.3٪

البته، هیچ پشتیبانی کامل وجود ندارد، اما همه مرورگرهای مدرن پشتیبانی از طرح های Flexbox. برای برخی، هنوز هم باید پیشوند را مشخص کنید. برای یک تصویر واقعی، به Caniuse.com نگاه کنید و ببینید که 96.3٪ از مرورگر مورد استفاده امروز بدون پیشوند ها، با پیشوند های 98.3٪ کار خواهند کرد. این یک شاخص عالی برای استفاده جسورانه از FlexBox استفاده می شود.

بدانید که پیشوند های مربوطه امروز (ژوئن 2019) مربوط می شود، من نمونه ای از تمام قوانین فلکس را ارائه خواهم داد پیشوند های لازم:

/ * container * / .flex (نمایش: -Webkit-box؛ صفحه نمایش: -ms-flexbox؛ صفحه نمایش: Flex؛ صفحه نمایش: -Webkit-Inline-Box؛ صفحه نمایش: -ms-inline-flexbox؛ صفحه نمایش: inline-flex؛ -WebKit-Box-Orient: عمودی؛ -Webkit-Box-Direction: Normal؛ -MS-Flex-Direction: Column؛ Flex-Direction: Column؛ -MS-Flex-Wrap: Wrap؛ Flex-Wrap: Wrap؛ -MS -Flex-Flow: بسته بندی ستون؛ Flex-Flow: بسته بندی ستون؛ -Webkit-Box-Pack: توجیه؛ -MS-Flex-Pack: توجیه؛ توجیه محتوا: فضای بین توزیع؛ محتوای هماهنگ: فضای اطراف؛) / * عناصر * / .flex-item (-webkit-box-flex: 1؛ -ms-flex-posos: 1؛ flex-grow: 1؛ -ms-flex- منفی: 2؛ flex-shrink: 2؛ -ms-flex-preferred-size: 100px؛ flex-base: 100px؛ -ms-flex: 1 2 100px؛ flex: 1 2 100px؛ -ms-flex-item-align : مرکز؛ Align-Self: Center؛ -webkit-box-ordinal گروه: 3؛ -ms-flex-order: 2؛ سفارش: 2؛)

بهتر است اگر خواص با پیشوند ها به اموال اصلی بروید.
امروز (توسط Caniuse) قبل از پیشوند امروز (توسط Caniuse) وجود ندارد، اما به طور کلی پیشوند های بیشتر.

کروم صفری فایرفاکس اپرا یعنی اندروید iOS
20- (قدیمی) 3.1+ (قدیمی) 2-21 (قدیمی) 10 (پیچ و خم) 2.1+ (قدیمی) 3.2+ (قدیمی)
21+ (جدید) 6.1+ (جدید) 22+ (جدید) 12.1+ (جدید) 11+ (جدید) 4.4+ (جدید) 7.1+ (جدید)
  • (جدید) - نحو جدید: صفحه نمایش: Flex؛ .
  • (Tweener) - نحو غیر رسمی غیر رسمی 2011: صفحه نمایش: Flexbox؛ .
  • (قدیمی) - نحو قدیمی 2009: نمایش: جعبه؛

ویدیو

خوب، در مورد ویدیو فراموش نکنید، گاهی اوقات نیز جالب و قابل فهم است. در اینجا یک زن و شوهر از محبوب است:

لینک های مفید برای انعطاف پذیری

    flexboxfroggy.com - بازی Flexbox آموزشی.

    FlexPlorer یک طراح کد انعطاف پذیر بصری است.