Flexbox nədir? Bütün css xüsusiyyətlərinin təsviri, əsas prinsipləri, üstünlükləri və mənfi cəhətləri. Flexbox Faydalı Flex keçidləri ilə işləmək üçün bəzi faydalı nümunələr
Flexbox, məzmunundan asılı olmayaraq bütün sütunların tam hündürlüyü tutmalı olduğu üç sütunlu, "Müqəddəs Qrail" adlanan düzən kimi tez-tez istifadə olunan veb sayt tərtibatlarını yaratmaq üçün idealdır. Bu halda mənbə kodunda əsas məzmun naviqasiyadan əvvəl, səhifənin özündə isə əsas məzmun naviqasiyadan sonra gəlir.
Bunun kimi.
Flexbox-un meydana çıxmasından əvvəl, bu cür tərtibatı bir növ hack istifadə etmədən əldə etmək olduqca çətin idi. Tərtibatçılar tez-tez məzmunun miqdarından və ya ekran ölçüsündən asılı olmayaraq hər şeyi düzgün şəkildə sıralamaq üçün əlavə işarələmə əlavə etmək, mənfi kənarları tətbiq etmək və digər tövsiyələr etməli olurdular. Ancaq yuxarıdakı nümunədən göründüyü kimi, flexbox-da hər şey daha sadədir.
Budur kodun xülasəsi. Bu misalda biz #main elementini çevik konteynerə çeviririk, eyni zamanda başlıq və altbilgini blok səviyyəli elementlər kimi buraxırıq. Başqa sözlə, yalnız orta hissə flexbox olur. Budur, onu çevik konteynerə çevirən bir parça.
#main (ekran: flex; min hündürlük: calc(100vh - 40vh); )
Biz sadəcə ekrandan istifadə edirik: çevik konteyner etmək üçün. Diqqət yetirin ki, biz həmçinin calc() funksiyası ilə minimum hündürlük dəyərini təyin edirik və #main-i görünüş sahəsinin hündürlüyünün 100%-nə təyin edirik. mənfi qapağın və zirzəminin hündürlüyü (hər biri 20vh). Bu, az məzmuna malik olsa belə, tərtibatın ekranın tam hündürlüyünü tutacağını təmin edir. Nəticədə, məzmun ekranın hündürlüyündən az yer tutursa, altbilgi heç vaxt qalxmayacaq və onun altında boş yer qoymayacaq.
Bütün elementlərə qutu ölçüsünü: sərhəd qutusunu tətbiq etdiyimizi nəzərə alsaq, minimum hündürlüyün hesablanması kifayət qədər asan idi. Əgər etməsəydik, əlavə etməli olardıq doldurma dəyəriçıxılacaq məbləğə.
Flex konteynerini quraşdırdıqdan sonra biz çevik elementlərlə məşğul oluruq.
#main > article ( flex: 1; ) #main > nav, #main > side ( flex: 0 0 20vw; fon: bej; ) #main > nav (sifariş: -1; )
Flex xassələri flex-grow, flex-shrink və flex-basis xassələrinin stenoqrafiyasıdır. Birinci halda biz yalnız bir dəyər yazdıq, ona görə də flex flex-grow xassəsini təyin edir. İkinci halda, hər üç dəyəri yazdıq
Bu yazıda biz çevik veb səhifə tərtibatları yaratmaq üçün nəzərdə tutulmuş CSS Flexbox texnologiyası ilə tanış olacağıq.
CSS Flexbox-un məqsədi
CSS Flexbox üçündür çevik planların yaradılması. Bu texnologiya ilə elementləri konteynerdə yerləşdirmək, onlar arasında mövcud boşluğu bölüşdürmək və müəyyən ölçüləri olmasa belə, onları bu və ya digər şəkildə hizalamaq çox asan və çevikdir.
CSS Flexbox, float və yerləşdirmə istifadə etməkdənsə, cavab verən dizayn yaratmağı çox asanlaşdırır.
Flexbox həm bütün səhifənin CSS işarələnməsi, həm də onun fərdi blokları üçün istifadə edilə bilər.
CSS Flexbox brauzer dəstəyi
CSS Flexbox hazırda istifadə olunan bütün müasir brauzerlər tərəfindən dəstəklənir (prefikslərdən istifadə etməklə: IE10+, Edge12+, Firefox 2+, Chrome 4+, Safari 3.1+, Opera 12.1+, iOS Safari 3.2, Opera mini, Android 2.1+, Blackberry 7+).
CSS Flexbox Əsasları
Flexbox ilə CSS işarələməsinin yaradılması tələb olunan HTML elementinin ekran CSS xassəsini flex və ya flex-inline olaraq təyin etməklə başlayır.
Bundan sonra, bu element çevik bir konteynerə çevrilir və onun hamısı dərhal uşaq elementlər çevik elementlərdir. Üstəlik, flexbox haqqında danışarkən biz bununla yalnız display:flex və ya display:flex-inline və bütün elementləri olan elementi nəzərdə tuturuq. birbaşa içində yerləşir. Beləliklə, CSS Flexbox-da yalnız iki növ element var: çevik konteyner və çevik element.
Əksər brauzerlər tərəfindən tərtibat dəstəyi üçün CSS-ə prefiksli və maksimum genişlik xüsusiyyətləri əlavə edilmişdir.
Bloku çevik konteynerə "çevirmək" üçün sıra sinifindən istifadə olunur. Flex konteyner daxilində .col__article və .col__aside flex elementlərinin eninin təyini flex CSS xassəsindən istifadə etməklə həyata keçirilir.
Nümunə olaraq, flexbox-dan istifadə edərək başqa altbilgi yerləşdirək və .col__article elementində üç elementdən ibarət blok yaradaq (bir elementin minimum eni 300px). Altbilgidə dörd blok yerləşdirəcəyik (bir blokun minimum eni 200px).
FlexBox haqqında danışmaq istərdim. Flexbox layout modulu (çevik qutu - "çevik blok", hazırda W3C Namizəd Tövsiyəsi) konteynerdəki elementlər arasında boş yerin düzülməsi, hizalanması və paylanması üçün daha səmərəli üsul təklif etmək məqsədi daşıyır, hətta onların ölçüsü naməlum və/və ya dinamik olduqda belə ( buna görə də "çevik" sözü).
Flex layoutun əsas ideyası konteynerə məkanı daha yaxşı doldurmaq üçün elementlərinin enini / hündürlüyünü (və qaydasını) dəyişdirmək imkanı verməkdir (əksər hallarda bütün növ displeyləri və ekran ölçülərini dəstəkləmək üçün).Çevik konteyner boşluqları doldurmaq üçün elementləri uzadır və ya daşmasının qarşısını almaq üçün onları sıxır.
Ən əsası, flexbox düzeni adi planlardan fərqli olaraq istiqamətsizdir (qutular şaquli və daxili elementlər üfüqidir).Müntəzəm tərtibat veb səhifələr üçün əla olsa da, böyük və ya mürəkkəb proqramları dəstəkləmək üçün çeviklik yoxdur (xüsusilə ekran oriyentasiyasının dəyişdirilməsi, ölçüsünün dəyişdirilməsi, uzanması, sıxılması və s.).
Çünki flexbox bütöv bir moduldur, tək bir xüsusiyyət deyil, bir çox xüsusiyyətləri birləşdirir.Onlardan bəziləri konteynerə (ana element, aka çevik konteyner) tətbiq edilməlidir, digər xüsusiyyətlər isə uşaq elementlərə və ya çevik elementlərə aiddir.
Müntəzəm tərtibat blokun və daxili elementlərin axın istiqamətlərinə əsaslansa da, çevik tərtibat "çevik axın istiqamətləri"nə əsaslanır.
Flexbox
Əsasən, maddələr ya əsas ox boyunca (əsas başlanğıcdan əsas sona) və ya çarpaz ox boyunca (çarpaz başlanğıcdan çarpaz sona) paylanacaq.
əsas ox - çevik elementlərin yerləşdiyi əsas ox.Nəzərə alın ki, o, üfüqi olmalıdır, hamısı əsaslandırılmış məzmunun keyfiyyətindən asılıdır.
əsas başlanğıc | main-end - flex maddələr əsas başlanğıc mövqeyindən əsas son vəziyyətə qədər konteynerə yerləşdirilir.
əsas ölçü - seçilmiş əsas ölçüdən asılı olaraq çevik elementin eni və ya hündürlüyü.Əsas dəyər elementin eni və ya hündürlüyü ola bilər.
çarpaz ox — əsas birinə perpendikulyar olan eninə ox.Onun istiqaməti əsas oxun istiqamətindən asılıdır.
çarpaz başlanğıc | cross-end - flex xətləri maddələrlə doldurulur və çarpaz başlanğıc və çarpaz mövqedən konteynerə yerləşdirilir.
çarpaz ölçüsü - seçilmiş ölçüdən asılı olaraq çevik elementin eni və ya hündürlüyü bu dəyərə bərabərdir.Bu xüsusiyyət seçilmiş ölçüdən asılı olaraq elementin eni və ya hündürlüyü ilə eynidir.
Xüsusiyyətlər
ekran: flex | inline-flex;
Çevik konteyneri müəyyən edir (seçilmiş dəyərdən asılı olaraq daxili və ya blok), onun bütün birbaşa uşaqları üçün çevik kontekst daxildir.
ekran: digər dəyərlər | flex | inline-flex;
Yadında saxla:
CSS sütunları çevik konteynerlə işləmirfloat, aydın və şaquli hizalama çevik elementlərdə işləmir
əyilmə istiqaməti
Flex konteynerin əsas elementindən əvvəl tətbiq olunur.
Əsas oxu təyin edir, beləliklə, konteynerə yerləşdirilən elastik elementlər üçün istiqaməti müəyyən edir.
çevik istiqamət: sıra | sıra tərs | sütun | sütun tərsinə
sıra (standart): ltr üçün soldan sağa, rtl üçün sağdan sola;
sıra-əks: ltr üçün sağdan sola, rtl üçün soldan sağa;
sütun: sıraya bənzər, yuxarıdan aşağıya;
sütun-əks: sıra tərsinə bənzər, aşağıdan yuxarı.
elastik sarğı
Flex konteynerin əsas elementindən əvvəl tətbiq olunur.
Konteynerin tək xətli və ya çox xəttli olmasını, həmçinin eninə oxun istiqamətini müəyyən edir, yeni xətlərin yerləşəcəyi istiqaməti müəyyənləşdirir.
flex-wrap: nowrap | sarmaq | tərsinə sarın
nowrap (defolt): tək sətir / ltr üçün soldan sağa, rtl üçün sağdan sola;
sarın: ltr üçün çoxxətli / soldan sağa, rtl üçün sağdan sola;
wrap-reverse: multiline / ltr üçün sağdan sola, rtl üçün soldan sağa.
çevik axın
Flex konteynerin əsas elementindən əvvəl tətbiq olunur.
Bu, birlikdə əsas və çarpaz oxları təyin edən flex-istication və flex-wrap xassələri üçün stenoqramdır.Sıra nowrap üçün defolt.
çevik axın< ‘flex-direction’> || < ‘Flex-wrap’>
əsaslandırmaq-məzmun
Flex konteynerin əsas elementindən əvvəl tətbiq olunur.
Əsas oxa nisbətdə düzülməni təyin edir.Sətirin elementləri "uzatılmadıqda" və ya sürükləndikdə, lakin artıq maksimum ölçüyə çatdıqda boş yer ayırmağa kömək edir.O, həmçinin xəttdən kənara çıxanda elementlərin düzülməsinə bir qədər nəzarət etməyə imkan verir.
əsaslandırmaq-məzmun: flex-start | flex end | mərkəz | arasında boşluq | ətrafında boşluq
flex-start (standart): elementlər sətrin əvvəlinə köçürülür;
flex-end: elementlər xəttin sonuna köçürülür;
mərkəz: elementlər xəttin ortasına düzülür;
boşluq-arasında: elementlər bərabər məsafədə yerləşir (sətrin əvvəlində birinci element, sonunda sonuncu element)
boşluq ətrafında: elementlər öz aralarında və cərgənin xaricində bərabər məsafədə bərabər şəkildə yerləşdirilir.
əsaslandırmaq-məzmun
hizalanan maddələr
Flex konteynerin əsas elementindən əvvəl tətbiq olunur.
Çevik elementlərin cari sətirdəki çarpaz oxa nisbətən necə yerləşdirildiyi üçün standart davranışı müəyyən edir.Bunu çarpaz ox üçün əsaslandırma-məzmunun bir versiyası kimi düşünün (əsas birinə perpendikulyar).
align-elementlər: flex-start | flex end | mərkəz | əsas | uzanmaq
flex-start: çarpaz başlanğıc mövqeyində yerləşən elementlər üçün çarpaz başlanğıc sərhədi;
flex-end: çarpaz nöqtədə yerləşən elementlər üçün çarpaz sərhəd;
mərkəz: elementlər çarpaz oxun mərkəzinə uyğunlaşdırılır;
əsas xətt: elementlər əsas xətt üzrə düzülür;
uzanır (standart): elementlər konteyneri doldurmaq üçün uzanır (min-en/maksimum genişliyə uyğun olaraq).
hizalanan maddələr
məzmunu uyğunlaşdırın
Flex konteynerin əsas elementindən əvvəl tətbiq olunur. Çarpaz oxda boş yer olduqda çevik konteynerin xətlərini düzləşdirir, əsas oxda əsaslandırılmış məzmunun etdiyi kimi. Qeyd: Bu xüsusiyyət tək sətirli flexboxlarla işləmir.
align-content: flex-start | flex end | mərkəz | arasında boşluq | ətrafında boşluq | uzanmaq
flex-start: xətlər konteynerin başlanğıcına nisbətən düzülür;
flex-end: xətlər konteynerin sonuna nisbətən düzülür;
mərkəz: sıralar konteynerin mərkəzinə uyğunlaşdırılır;
boşluq: sətirlər bərabər məsafədədir (sətrin əvvəlində birinci sətir, sonunda son sətir)
boşluq ətrafında: xətlər öz aralarında bərabər məsafədə bərabər paylanır;
uzanır (standart): Boş yeri doldurmaq üçün xətlər uzanır.
məzmunu uyğunlaşdırın
sifariş
Varsayılan olaraq, çevik elementlər orijinal qaydada yerləşdirilir.Bununla belə, sifariş xassəsi onların konteynerdə görünmə qaydasına nəzarət edə bilər.
sifariş 1
flex-böyümək
Uşaq / flex elementindən əvvəl tətbiq olunur. Ehtiyac olduqda çevik elementin "böyümək" qabiliyyətini təyin edir.Ölçüsüz bir dəyər alır, nisbət kimi xidmət edir.Elementin konteynerdə nə qədər boş yer tuta biləcəyini müəyyənləşdirir. Bütün elementlərdə flex-grow xüsusiyyəti 1-ə təyin edilərsə, hər bir uşaq konteynerin içərisində eyni ölçü alacaq.Uşaqlardan birini 2-yə təyin etsəniz, o, digərlərindən iki dəfə çox yer tutacaq.
flex-böyümək
bükülmə
Uşaq / flex elementindən əvvəl tətbiq olunur.
Ehtiyac olduqda çevik elementin kiçilə biləcəyini müəyyən edir.
bükülmə
Mənfi nömrələr qəbul edilmir.
çevik əsas
Uşaq / flex elementindən əvvəl tətbiq olunur. Konteynerdə yer ayırmadan əvvəl element üçün standart ölçüsü müəyyən edir.
çevik əsas
əyilmək
Uşaq / flex elementindən əvvəl tətbiq olunur. Bu flex-grow, flex-shrink və flex-basis üçün stenoqramdır.İkinci və üçüncü parametrlər (flex-shrink, flex-basis) isteğe bağlıdır.Standart dəyər 0 1 avtomatikdir.
flex: heç biri | [< ‘Flex-grow «> <» flex-shrink’>? || < ‘Flex-basis’>]
hizalanmaq
Uşaq / flex elementindən əvvəl tətbiq olunur. Fərdi çevik elementlər üçün defolt və ya hizalama elementlərinin düzülməsini ləğv etməyə imkan verir. Mövcud dəyərləri daha yaxşı başa düşmək üçün align-items xassəsinin təsvirinə baxın.
align-self: avtomatik | flex start | flex end | mərkəz | əsas | uzanmaq
Nümunələr
Demək olar ki, hər gün baş verən çox, çox sadə bir nümunə ilə başlayaq: tam mərkəzdə hizalanma.Flexbox istifadə edərək heç bir şey asan deyil.
Valideyn ( displey: flex; hündürlük: 300px; ) .child ( en: 100px; / * Doğrudur * / hündürlük: 100px; / * Düzdür * / kənar: avtomatik; / * Sehrli! * / )
Bu misal, avtomatik olaraq təyin edilmiş çevik konteynerin altındakı kənarın artıq boşluğu udmasına əsaslanır, buna görə də bu şəkildə girinti tapşırığı elementi hər iki oxda tam olaraq mərkəzə uyğunlaşdıracaq.İndi bəzi xüsusiyyətlərdən istifadə edək.Sabit ölçülü (gözəllik üçün), lakin konteynerin ölçüsünü dəyişdirmək imkanı olan 6 elementdən ibarət bir dəsti təsəvvür edin.Biz onları üfüqi şəkildə bərabər paylamaq istəyirik ki, brauzer pəncərəsinin ölçüsü dəyişdirildikdə hər şey yaxşı görünsün (@media sorğuları yoxdur!).
Flex-konteyner (
/* Əvvəlcə çevik kontekst yaradın */
ekran: flex;
/* İndi axının istiqamətini və elementləri istəməyimizi müəyyən edək
yeni xəttə keçdi
* Bunun eyni olduğunu unutmayın:
* Flex-istiqamət: sıra;
* Flex-sarğı: sarma;
* /
flex-flow: sıra sarğı;
/* İndi məkanın necə paylanacağını müəyyən edək */
}
Hazır. Qalan hər şey dizayn məsələsidir. Gəlin başqa bir şeyə cəhd edək.Təsəvvür edin ki, biz saytımızın ən yuxarı hissəsində sağa düzülmüş naviqasiya istəyirik, lakin onun orta ölçülü ekranlarda mərkəzə düzülməsini və kiçik ekranlarda tək sütuna çevrilməsini istəyirik.Hər şey olduqca sadədir.
/* Böyük ekranlar */
.naviqasiya(
ekran: flex;
flex-flow: sıra sarğı;
/* Elementləri əsas ox boyunca xəttin sonuna köçürür */
əsaslandırmaq-məzmun: flex-end;
}
media hamısı və (maksimum en: 800px) (
.naviqasiya(
/* Orta ölçülü ekranlar üçün biz naviqasiyanı mərkəzləşdiririk,
elementlər arasında boş yerin bərabər paylanması */
əsaslandırmaq-məzmun: ətrafdakı boşluq;
}
}
/* Kiçik ekranlar */
media hamısı və (maksimum en: 500px) (
.naviqasiya(
/* Kiçik ekranlarda sətir əvəzinə elementləri sütunda düzürük */
çevik istiqamət: sütun;
}
}
Gəlin çevik elementlərin çevikliyi ilə oynayaq!Tam genişlikdə başlıq və altbilgi ilə mobil uyğun üç sütunlu tərtibata nə demək olar?Və fərqli bir sıra ilə.
Qapağı (
ekran: flex;
flex-flow: sıra sarğı;
}
/* Bütün Elementləri 100% genişliyə təyin edin */
.başlıq, .əsas, .nav, .kənara, .footer (
əyilmə 1100%;
}
/* Bu halda, hədəf almaq üçün orijinal sifarişə güvənirik
* Mobil cihazlar:
* 1 başlıq
*2 nav
* 3 əsas
* 4 kənara
* 5 fut
* /
/* Orta ölçülü ekranlar */
media hamısı və (min-en: 600px) (
/* Hər iki yan panel eyni xəttdədir */
.side (çevik: 1 avtomatik; )
}
/* Böyük ekranlar */
Flexbox-u haqlı olaraq css-də layout qurarkən çox sayda problemləri həll etmək üçün uğurlu cəhd adlandırmaq olar. Ancaq onun təsvirinə keçməzdən əvvəl, indi istifadə etdiyimiz layout üsullarında nəyin səhv olduğunu öyrənək?
Hər hansı bir yazı makinası bir şeyi şaquli olaraq hizalamaq və ya rezin orta sütunla 3 sütunlu bir tərtib etmək üçün bir neçə yol bilir. Ancaq etiraf edək ki, bütün bu üsullar olduqca qəribədir, hack kimi görünür, bütün hallarda uyğun deyil, başa düşmək çətindir və tarixən inkişaf etmiş bəzi sehrli şərtlər yerinə yetirilmədikdə işləmir.
Bu, html və css təkamül yolu ilə inkişaf etdiyi üçün baş verdi. Başlanğıcda veb səhifələr tək yivli mətn sənədlərinə bənzəyirdi, bir az sonra səhifə cədvəlli bloklara bölündü, sonra floatlarla çap etmək dəb oldu və ie6-nın rəsmi ölümündən sonra inline-block hiylələri əlavə edildi. Nəticədə, biz bütün mövcud veb səhifələrin 99,9%-i üçün tərtibat yaratmaq üçün istifadə edilən bütün bu texnikaların partlayıcı qarışığını miras aldıq.
Çevik konteyner daxilində blokların çox sətirli təşkili.
elastik sarğı
Yuxarıda verdiyimiz bütün nümunələr blokların tək sətirli (tək sütunlu) düzülüşü nəzərə alınmaqla qurulmuşdur. Deməliyəm ki, standart olaraq, çevik konteyner həmişə içindəki blokları bir sətirdə yerləşdirəcəkdir. Bununla belə, spesifikasiya çox xətt rejimini də dəstəkləyir. CSS xüsusiyyəti flex-wrap çevik konteyner daxilində çox xətt üçün cavabdehdir.
Mövcud dəyərlər elastik sarğı:
- indi rap (cari dəyər): bloklar bir sətirdə soldan sağa düzülür (rtl ilə sağdan sola)
- sarma: bloklar bir neçə üfüqi sıraya düzülür (bir sıraya uyğun gəlmirsə). Soldan sağa bir-birlərini izləyirlər (rtl ilə sağdan sola)
- sarma-ters: eyni bükmək, lakin bloklar tərs qaydadadır.
flex-flow flex-istication + flex-wrap üçün lazımlı stenoqramdır
Əslində, flex-flow bir xüsusiyyətdə eninə oxun əsas və çoxxəttinin istiqamətini təsvir etmək imkanı verir. Defolt olaraq flex-flow: row nowrap .
çevik axın:<‘flex-direction’> || <‘flex-wrap’>
css
/* yəni. ... */ .my-flex-block( flex-istecrion:column; flex-wrap: wrap; ) /* bu eynidir... */ .my-flex-block( flex-flow: sütun sarğısı ; )məzmunu uyğunlaşdırın
Align-content xüsusiyyəti də var, nəticədə blokların cərgələrinin şaquli olaraq necə düzüləcəyini və çevik konteynerin bütün sahəsini necə paylaşacağını müəyyən edir.
Əhəmiyyətli: align-content yalnız çoxsətirli rejimdə işləyir (məsələn, bükülmə: sarma; və ya bükülmə: sarma-ters;)
Mövcud dəyərlər məzmunu uyğunlaşdırın:
- flex-start: blokların sıraları çevik konteynerin başlanğıcına itələnir.
- flex-end: blok cərgələri çevik konteynerin sonuna qədər itələnir
- mərkəz: blok sıraları çevik konteynerin mərkəzindədir
- boşluq-arasında: blokların birinci sırası çevik konteynerin əvvəlində yerləşir, blokların sonuncu sırası sonundakı blokdur, qalan boşluqda bütün digər sıralar bərabər paylanır.
- space-around: Blokların cərgələri çevik konteynerin əvvəlindən sonuna qədər bərabər şəkildə yerləşdirilir və bütün boş yerləri bərabər bölür.
- uzanmaq (cari dəyər): Blokların sıraları bütün mövcud yeri tutmaq üçün uzanır.
Flex-wrap və align-content CSS xassələri onun uşaqlarına deyil, birbaşa çevik konteynerə tətbiq edilməlidir.
Flex-də çox xətt xüsusiyyətlərinin nümayişi
Çevik konteynerin uşaq elementləri üçün CSS qaydaları (flex blokları)
flex-basis - tək çevik blokun əsas ölçüsü
Digər çevik amillərə əsaslanan çevrilmələr tətbiq edilməzdən əvvəl çevik qutu üçün ilkin əsas oxun ölçüsünü təyin edir. İstənilən uzunluq vahidində (px , em , % , ...) və ya avtomatik (defolt) təyin edilə bilər. Avtomatik olaraq təyin olunarsa, blokun ölçüləri (en, hündürlük) əsas götürülür ki, bu da öz növbəsində, açıq şəkildə göstərilmədiyi təqdirdə məzmunun ölçüsündən asılı ola bilər.
flex-grow - tək bir çevik blokun "xəsisliyi"
Lazım gələrsə, fərdi çevik qutunun bitişik elementlərdən nə qədər böyük ola biləcəyini müəyyən edir. flex-grow ölçüsüz dəyər alır (defolt 0)
Misal 1:
- Əgər çevik konteynerin içindəki bütün çevik qutularda flex-grow:1 varsa, onlar eyni ölçüdə olacaqlar.
- Onlardan birində flex-grow:2 varsa, o, digərlərindən 2 dəfə böyük olacaq
Misal 2:
- Əgər çevik konteynerin içərisindəki bütün çevik qutularda flex-grow:3 varsa, onlar eyni ölçüdə olacaqlar.
- Əgər onlardan birində flex-grow:12 varsa, o, bütün digərlərindən 4 dəfə böyük olacaq
Yəni, flex-grow-un mütləq dəyəri dəqiq genişliyi müəyyən etmir. Eyni səviyyəli digər çevik bloklara münasibətdə onun "acgözlük" dərəcəsini müəyyənləşdirir.
flex-shrink - tək çevik blokun "sıxılma qabiliyyəti" faktoru
Kifayət qədər boş yer yoxdursa, çevik qutunun çevik konteyner daxilində bitişik elementlərə nisbətən nə qədər kiçiləcəyini müəyyən edir. Standart 1-dir.
flex - flex-grow, flex-shrink və flex-basis xüsusiyyətləri üçün stenoqram
flex: heç biri | [<"flex-grow"> <"flex-shrink">? || <"flex-basis"> ]
css
/* yəni. ... */ .my-flex-block( flex-grow:12; flex-shrink:3; flex base: 30em; ) /* bu eynidir... */ .my-flex-block( flex : 12 3 30em; )Flex-grow, flex-shrink və flex-basis üçün demo
align-self - eninə ox boyunca tək flex-blokun hizalanması.
Fərdi çevik qutu üçün çevik konteynerin align-items xassəsini ləğv etməyə imkan verir.
Mövcud align-self dəyərləri (align-elementlər üçün eyni 5 seçim)
- flex-start: çevik qutu çarpaz oxun başlanğıcına itələnir
- flex-end: əyilmə qutusu çarpaz oxun sonuna qədər itələnir
- mərkəz: çevik qutu çarpaz oxun mərkəzində yerləşdirilir
- baza: əsas xəttə uyğunlaşdırılmış çevik qutu
- uzanmaq (cari dəyər): Çevik qutu çarpaz oxda bütün mövcud yeri tutmaq üçün uzanır, əgər varsa, minimum eni / maksimum eni nəzərə alınır.
sifariş - çevik konteynerin içərisindəki tək çevik blokun sırası.
Varsayılan olaraq, bütün bloklar html-də verilmiş ardıcıllıqla bir-birini izləyir. Lakin bu sifariş order xassəsindən istifadə etməklə dəyişdirilə bilər. Tam ədəd kimi müəyyən edilir və standart olaraq 0-dır.
Sifariş dəyəri elementin ardıcıllıqdakı mütləq mövqeyini təyin etmir. Elementin mövqeyinin ağırlığını təyin edir.
HTML
Bu halda, bloklar əsas ox boyunca bir-birini aşağıdakı ardıcıllıqla izləyəcək: maddə5, maddə1, maddə3, maddə4, maddə2
Align-öz və sifariş üçün demo
marja: avtomatik şaquli. Arzular çin olur!
Flexbox ən azı ona görə sevilə bilər ki, üfüqi düzülmə hamıya marja ilə tanışdır: avtomatik burada şaquli üçün də işləyir!
My-flex-container (ekran: flex; hündürlük: 300px; /* Və ya nə olursa olsun */ ) .my-flex-block ( en: 100px; /* Və ya hər hansı */ hündürlük: 100px; /* Və ya hər hansı * / kənar: auto; /* Sehrli! Qutu şaquli və üfüqi olaraq mərkəzləşdirilmişdir! */ )
Xatırlamaq lazım olanlar
- Ehtiyacınız olmayan yerlərdə flexbox-dan istifadə etməməlisiniz.
- Regionların tərifini və məzmunun yenidən sıralanmasını bir çox hallarda səhifənin strukturundan asılı etmək hələ də faydalıdır. Düşünün.
- Flexbox-u anlayın və əsasları bilin. Bu, gözlənilən nəticəni əldə etməyi xeyli asanlaşdırır.
- Marjalar haqqında unutmayın. Onlar oxun hizalanmasını təyin edərkən nəzərə alınır. Flexbox kənarlarının normal axındakı kimi "yıxılmadığını" xatırlamaq da vacibdir.
- Flex bloklarının float dəyəri nəzərə alınmır və əhəmiyyət kəsb etmir. Bu, yəqin ki, flexbox-a keçərkən hansısa şəkildə zərif deqradasiya üçün istifadə edilə bilər.
- flexbox veb komponentləri və veb səhifələrin ayrı-ayrı hissələrini yerləşdirmək üçün çox uyğundur, lakin əsas tərtibatları (məqalənin mövqeyi, başlıq, altbilgi, navbar və s.) tərtib edərkən yaxşı işləmədi. Bu hələ də mübahisəli məsələdir, lakin bu məqalə çatışmazlıqları olduqca inandırıcı şəkildə göstərir xanthir.com/blog/b4580
Nəhayət
Düşünürəm ki, flexbox, əlbəttə ki, bütün digər layout üsullarını əvəz etməyəcək, lakin çox sayda vəzifəni həll edərkən, əlbəttə ki, yaxın gələcəkdə layiqli yer tutacaqdır. Və şübhəsiz ki, indi onunla işləməyə çalışmalısan. Aşağıdakı məqalələrdən biri flex-layout ilə işləməyin konkret nümunələrinə həsr olunacaq. Xəbərlərə abunə olun;)
Align-content xüsusiyyəti boş yer olduqda eninə ox boyunca əyilmə qabının daxilində xətlərin düzülmə növünü təyin edir.
-a aiddir: elastik konteyner.
Cari dəyər: uzanmaq.
Flex-start xətləri çarpaz oxun əvvəlində yerləşir. Hər növbəti sətir əvvəlki ilə eyniləşir. flex-end Xətlər çarpaz oxun sonundan başlayaraq yerləşdirilir. Hər bir əvvəlki sətir növbəti ilə üst-üstə düşür. mərkəz Xətlər konteynerin ortasına yerləşdirilir. boşluq-arasında Xətlər konteynerdə bərabər paylanır və aralarındakı məsafə eynidir. boşluq ətrafında Xətlər bərabər paylanır ki, iki bitişik xətt arasındakı boşluq eyni olsun. Birinci sətirdən əvvəl və sonuncu sətirdən sonrakı ağ boşluq iki bitişik sətir arasındakı boşluğun yarısına bərabərdir. boşluq-bərabər Satırlar bərabər paylanır. Birinci sətirdən əvvəl və sonuncu sətirdən sonrakı ağ boşluq digər sətirlərlə eyni genişlikdədir. uzanır Xətlər boş yeri doldurmaq üçün bərabər şəkildə uzanır.
Align-content xassəsi çarpaz oxda əlavə boşluq olduqda çevik konteynerin xətlərini çevik konteyner daxilində düzləşdirir, əsas oxda ayrı-ayrı elementləri düzləşdirməyə bənzər. Qeyd edək ki, bu xüsusiyyətin tək xəttli çevik konteynerə heç bir təsiri yoxdur. Dəyərlər aşağıdakı mənaları ifadə edir:
Qeyd: Yalnız çoxsətirli çevik konteynerlərdə xətlərin düzülməsi üçün çarpaz oxda boş yer olur, çünki tək xəttli çevik konteynerdə alt xətt avtomatik olaraq boşluğu doldurmaq üçün uzanır.
üçün tətbiq edilir: elastik qablar.
İlkin: uzanmaq.
Flex-start xətləri çevik konteynerin başlanğıcına doğru yığılır. Çevik konteynerdəki birinci xəttin çarpaz başlanğıc kənarı əyilmə qabının çarpaz başlanğıc kənarı ilə eyni səviyyədə yerləşdirilir və hər bir sonrakı sətir əvvəlki xəttlə eyni səviyyədə yerləşdirilir. flex-end Xətlər çevik konteynerin sonuna doğru qablaşdırılır. Son xəttin çarpaz kənarı əyilmə qabının çarpaz kənarı ilə eyni səviyyədə yerləşdirilir və hər bir əvvəlki sətir sonrakı xətt ilə eyni səviyyədə yerləşdirilir. mərkəz Xətlər çevik konteynerin mərkəzinə doğru yığılmışdır. Çevik konteynerdəki xətlər bir-biri ilə eyni səviyyədə yerləşdirilir və elastik konteynerin ortasına düzülür, çevik konteynerin çarpaz başlanğıc məzmunu kənarı ilə çevik konteynerdəki birinci sətir arasında bərabər boşluq qalır. çevik konteynerin çarpaz məzmun kənarı və elastik konteynerdəki sonuncu sətir. (Qalan boş yer mənfi olarsa, xətlər hər iki istiqamətdə bərabər şəkildə daşacaq.) Xətlər arası boşluq çevik konteynerdə bərabər paylanır. Qalan boş yer mənfi olarsa, bu dəyər flex-start ilə eynidir. Əks halda, çevik konteynerdəki birinci xəttin çarpaz başlanğıc kənarı əyilmə qabının çarpaz başlanğıc məzmunu kənarı ilə eyni səviyyədə yerləşdirilir, elastik konteynerdəki sonuncu xəttin çarpaz kənarı çarpaz konteynerlə eyni səviyyədə yerləşdirilir. çevik konteynerin son məzmunu kənarı və çevik konteynerdə qalan xətlər hər hansı iki bitişik xətt arasındakı məsafənin eyni olması üçün paylanır. space-around Xətlər çevik konteynerdə bərabər paylanmışdır, hər iki ucunda yarım ölçülü boşluqlar var. Qalan boş yer mənfi olarsa, bu dəyər mərkəzlə eynidir. Əks halda, çevik konteynerdəki xətlər elə paylanır ki, hər hansı iki bitişik sətir arasındakı məsafə eyni olsun və birinci/son sətirlər ilə çevik konteynerin kənarları arasındakı məsafə çevik xətlər arasındakı məsafənin yarısı qədər olsun. boşluq-bərabər Xətlər çevik konteynerdə bərabər paylanır. Qalan boş yer mənfi olarsa, bu dəyər mərkəzlə eynidir. Əks halda, çevik konteynerdəki xətlər elə paylanır ki, hər çevik xətt arasındakı məsafə eyni olsun. uzanır Xətlər qalan yeri tutmaq üçün uzanır. Qalan boş yer mənfi olarsa, bu dəyər flex-start ilə eynidir. Əks halda, boş yer bütün xətlər arasında bərabər bölünərək onların çarpaz ölçüsünü artırır.