CSS Elementler arasında olan girintileri. Flex konteynerini kullanarak CSS ile blokları hizalama

CSS FlexBox (Esnek Kutu Düzeni Modülü) - Esnek konteyner düzeninin modülü, eksenin temeli, eksenin temelidir.

FlexBox dışarıdan oluşur flex Konteyner (Flex Container) ve esnek ürünler (Flex öğeleri). Esnek elemanlar dize veya sütuna yerleştirilebilir ve kalan boş alan aralarında çeşitli şekillerde dağıtılır.

FlexBox modülü, aşağıdaki görevleri çözmenizi sağlar:

  • Öğeleri dört yönden birine yerleştirin: Soldan sağa, sağ sola, yukarıdan aşağıya veya aşağıdan aşağıya doğru yerleştirin.
  • Öğeleri görüntüleme prosedürünü geçersiz kılın.
  • Eşyaların boyutlarını otomatik olarak belirler, böylece uygun fiyata sığacak şekilde.
  • Sorunu yatay ve dikey merkezlerle çözün.
  • Taşıtına izin vermeden kabın içindeki elemanları aktarın.
  • Aynı yüksekliğin sütunlarını oluşturun.
  • Sayfanın altına basıldığında oluşturun.

FlexBox belirli görevleri çözer - Örneğin, navigasyon panelinin, navigasyon panelinin oluşturulması, çünkü esnek elemanlar sadece eksenlerden birine yerleştirilebilir.

Modülün mevcut sorunlarının listesi ve bunlar için çapraz tarayıcı çözümlerinin listesi Philip Walton makalesinde okuyabilirsiniz.

FlexBox nedir

Destek tarayıcıları

Yani: 11.0, 10.0 ms-
Firefox: 28.0, 18.0 -MOZ-
Krom: 29.0, 21.0 -Webkit-
Safari: 6.1 -webkit-
Opera: 12.1 -Webkit
iOS Safari: 7.0 -WebKit-
Opera Mini: 8
Android Tarayıcı: 4.4, 4.1 -WebKit-
Android için Chrome: 44

1. Temel kavramlar

İncir. 1. FlexBox Modeli

FlexBox modülünü tanımlamak için belirli bir terimler kümesi kullanılır. Flex-Flow Değeri ve Kayıt Modu, bu terimlerin yazışmalarını fiziksel yönlere göre belirler: Üst / Sağ / Alt / Sol, Eksenler: Dikey / Yatay ve Boyut: Genişlik / Yükseklik.

Ana eksen - Flex elemanlarının yerleştirildiği eksen. Esas olarak ölçmeyi uzatır.

Ana başlatma ve ana son - Flex kabının ilk ve son tarafını, esnek elemanların yerleştirildiği (ana başlığa doğru ana başlamadan başlayarak) olarak tanımlayan çizgiler.

Ana boyut) - Esnek kabın veya esnek elemanların genişliği veya yüksekliği, esas olarak ölçüldüklerine bağlı olarak, esnek kabın ana boyutunu veya esnek elemanın ana boyutunu belirler.

Çapraz eksen - Ana eksene dik eksen. Enine boyutta uzanır.

Çapraz başlangıç \u200b\u200bve çapraz uç - Enine eksenin ilk ve son tarafını, esnek elemanların yerleştirildiği göreceli olarak tanımlayan çizgiler.

Çapraz boyutu) - Enine boyutta olanlara bağlı olarak, flex-konteyner veya esnek elemanların genişliği veya yüksekliği, enine boyutlarıdır.


İncir. 2. Satır ve sütun modu

2. Flex-konteyner

Flex Container, içerikleri için yeni bir esnek biçimlendirme bağlamı ayarlar. Flex konteyneri bir blok kabı değildir, bu nedenle şamandıra, net, dikey hizalama gibi CSS özellikleri çocuk elemanları için çalışmaz. Ayrıca, esnek kabı, metnin ve sözde elemanlara hoparlörler oluşturur, metnin ve psödo elemanları :: First Line ve :: First Letter.

FlexBox Markup Model, kendi içinde alt seçim blokları içeren ana HTML elemanının ekranının CSS özelliğinin belirli bir değeri ile ilişkilidir. Bu modeli kullanarak elemanları kontrol etmek için, ekran özelliğini aşağıdaki gibi ayarlamanız gerekir:

Flex-Container (/ * bir esnek kapsayıcı bloğu oluşturur * / ekran: -Webkit-Flex; Ekran: Flex;) .Flex-Container (/ * Flex-Container Dize Seviyesi * / Ekran: -WebKit-Inline-Flex ; Ekran: satır içi-flex;)

Bu özellik değerlerini yükledikten sonra, her bir çocuk öğesi otomatik olarak bir esnek eleman olur, bir satırda (ana eksen boyunca) ayarlayın. Bu durumda, blok ve küçük harf elemanları eşit davranır, yani. Blokların genişliği, içeriğin iç alanlarını ve çerçevelerini dikkate alarak içeriğinin genişliğine eşittir.


İncir. 3. FlexBox modelinde hizalama elemanları

Ebeveyn bloğu sarmalayıcı olmayan metin veya görüntüler içeriyorsa, anonim esnek elemanlar olurlar. Metin, konteyner bloğunun üst kenarı üzerinde seviyelendirilir ve görüntünün yüksekliği bloğun yüksekliğine eşitleşir, yani. Deforme olmuş.

3. Flex-elements

Flex-elements - Akıştaki esnek kabın içeriğini temsil eden bloklar. Esnek kabı, aşağıdaki özelliklere neden olan içerikleri için yeni bir formatlama bağlamı oluşturur:

  • Flex elemanları için, ekran özelliğinin değeri engellenmiştir. Ekran değeri: satır içi blok; ve ekran: tablo hücresi; ekranda hesaplanan: blok; .
  • Elementler arasındaki boş boşluk ortadan kalkar: Elementler arası metin, anonim bir esnek elemana sarılsa bile, kendi esnek elemanı haline gelmez. Anonim bir esnek elemanın içeriği için, kendi stillerini belirlemek imkansızdır, ancak bunları (örneğin, yazı tipi parametreleri) esnek kaptan miras alır.
  • Kesinlikle konumlandırılmış esnek eleman düzen düzenine katılmıyor.
  • Bitişik esnek elemanların marjı alanları daraltılmaz.
  • Marjın ve dolgunun yüzdesi değerleri, bunları içeren bloğun iç boyutundan hesaplanır.
  • marj: Otomatik; Genişler, uygun ölçümde ek alanı emer. Bitişik esnek elemanları hizalamak veya yaymak için kullanılabilirler.
  • Varsayılan olarak otomatik minimum esnek eleman boyutu, içeriğinin minimum boyutudur, yani Min-Genişlik: Otomatik; . Kaydırma kapları için, otomatik minimum boyut genellikle sıfırdır.

4. Flex-elements ve oryantasyon

Esnek kabın içeriği herhangi bir yönde ayrıştırılabilir ve herhangi bir sırada (kabın içindeki esnek elemanların yeniden sıralanması yalnızca görsel renderleri etkiler).

4.1. Ana eksenin yönü: esnek yön

Mülkiyet Flex konteynerine aittir. Mevcut kayıt moduna göre, esnek elemanların istiflendiği ana eksenin yönünü yönetir. Miraslanmadı.

esnek yön.
Değerler:
Kürek çekmek Soldan sağa varsayılan değer (RTL'de sağa sola). Flex elemanları dizede yerleştirilir. Ana eksenin başlangıcında (ana başlatma) ve son (ana-ucu) yönergeleri, satır iç ekseninin (satır içi eksen) (satır içi eksen) başlangıcına (inline-start) ve bir ucuna (satır içi uç) karşılık gelir.
Satır geri. Sağ soldaki yön (RTL'de sağdan sağa). Flex-elementler, kabın sağ kenarına (RTL - solda) göre dize yerleştirilir.
sütun. Yukarıdan aşağıya doğru yön. Flex elemanları sütunda ortaya konur.
Sütun gerisi. Ters sırayla elemanlı sütun, aşağı yukarı.
ilk
kalıtım.

İncir. 4. Soldan sağa doğru diller için esnek yön özelliği

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; -Webkit-Flex-Flex: Sıra-Tersi; Ekran: Flex; Flex-Direction: Sıra-ters;)

4.2. Çoklu Flex Konteyner Yönetimi: Flex-Wrap

Özellik, esnek kabın tek hatlı veya çok satırlı olup olmayacağını belirler ve ayrıca, yeni esnek konteyner çizgilerinin döşenmesinin yönünü belirleyen enine eksenin yönünü belirler.

Varsayılan olarak, esnek elemanlar ana eksen boyunca bir satırda istiflenir. Taşma olduğunda, esnek kabın limit çerçevesinin ötesine geçerler. Mülkiyet miras kalmadı.


İncir. 5. LTR-Diller için Flex-Wrap Özelliklerini kullanarak çoklu akışın yönetilmesi

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; -Webkit-Flex-wrap: Sarma; Ekran: Flex; Flex-wrap: Sarma;)

4.3. Yön ve Multiplay'in Özeti: Flex-Flow

Tesis, ana ve enine eksenlerin yönlerini belirlemenizi ve ayrıca birkaç satır için gerekirse esnek elemanları aktarma olasılığına izin verir. Esnek yön ve esnek sarma özelliklerinin kısaltılmış bir kaydıdır. Varsayılan değer esnek akış: satır nowrap; . Mülkiyet miras kalmadı.

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; -Webkit-Flex-Flow: Sıra Sarma; Ekran: Flex; Flex-Flow: Satır Sarma;)

4.4. Flex Element Ekran Siparişi: Sipariş

Mülkiyet, esnek elemanların görüntülendiği ve esnek kabın içine yerleştirildiği sırayı belirler. Esnek elementler için geçerlidir. Mülkiyet miras kalmadı.

Başlangıçta, tüm esnek elemanların siparişi vardır: 0; . Öğe için -1'den değeri belirlerken, zamanın başlangıcına, değeri 1 - sonuna kadar hareket eder. Birkaç esnek eleman aynı sipariş değerine sahipse, orijinal siparişe göre gösterilecektir.

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; Ekran: Flex;) .flex-item (-Webkit-Sipariş: 1; Sipariş: 1;)
İncir. 6. Flex-elements Ekran Siparişi

5. Esnek esnek elemanlar

Esnek bir düzenin belirlenmesi, esnek elemanları "bükme", ana boyuttaki mevcut alanı doldurmak için genişliğini / yüksekliğini (hangi boyutun ana ekseninde olduğu bağlı olarak) değiştirme kabiliyetidir. Bu, Flex özelliği kullanılarak yapılır. Esnek kabı, alt elemanları (esnek büyüme katsayılarıyla orantılı olarak) arasındaki boş alanı, kabı doldurmak veya taşması önlemek için bunları (esnek daralma katsayısına) sıkıştırır.

Esnek eleman, esneklik büyümesi ve esnek-shrink değerleri sıfırdır ve aksi takdirde "esnek" ise tamamen "esnek değildir" olacaktır.

5.1. Tek bir özellik ile esnek boyutlar kümesi: Flex

Özellik, esnek büyüme büyümesinin kısaltılmış bir kaydı, Flex-Shrink ve Flex-baz özellikleridir. Varsayılan değer: Flex: 0 1 Otomatik; . Hem bir hem de her üç özelliği de belirleyebilirsiniz. Mülkiyet miras kalmadı.

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; Ekran: Flex;) .Flex-item (-Webkit-Flex: 3 1 100PX; -MS-Flex: 3 1 100PX; Flex: 3 1 100PX;)

5.2. Büyüme Katsayısı: Flex-Büyümek

Mülkiyet, pozitif boş alanın dağılımı sırasında esnek kabın içindeki diğer esnek elemanlara göre bir esnek elemanın büyüme katsayısını belirler. Dizedeki flex-büyütme esnek elemanlarının değerlerinin toplamı 1'den azsa, boş alanın% 100'ünden az işgal ederler. Mülkiyet miras kalmadı.


İncir. 7. Flex-büyümeyi kullanarak gezinti bölmesindeki boş alanın yönetimi

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; Ekran: Flex;) .flex-item (-Webkit-Flex-Büyümek: 3; Flex-Büyümek: 3;)

5.3. Sıkıştırma oranı: Flex-Shrink

Özellik, negatif boş alanın dağılımı sırasında flex elemanının diğer esnek elemanlara göre sıkıştırma katsayısını gösterir. Esnek bazın temel boyutuyla çarpılır. Negatif alan, elemanın nasıl kızdırılabileceği zamana göre dağıtılır, bu nedenle, örneğin, esnek eleman belirgin şekilde azaltılıncaya kadar küçük bir esnek eleman sıfıra düşmez. daha büyük boyut. Mülkiyet miras kalmadı.


İncir. 8. Dizedeki esnek elemanların daralması

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; Ekran: Flex;) .flex-item (-Webkit-Flex-Shrink: 3; Flex-Shrink: 3;)

5.4. Temel Boyut: Flex bazlı

Özellik, esnek elemanın ilk ana boyutunu esneklik katsayılarına uygun olarak serbest alan dağılımından önce ayarlar. Tüm değerler için, otomatik ve içerik hariç, temel esnek boyut, yatay kayıt modlarında genişlik de tanımlanır. Yüzde değerleri, esnek kabın boyutuna göre belirlenir ve boyut belirtilmezse, esnek bazda kullanılan değer, içeriğinin boyutudur. Miraslanmadı.

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; Ekran: Flex;) .Flex-item (-Webkit-Flex-esası: 100px; Flex-esas: 100px;)

6. Hizalama

6.1. Ana eksen üzerinde hizalama: haklı olarak içerik

Özellik, flex-konteynerin ana ekseni boyunca esnek elemanları hizalar, boş alanın esnek elemanları tarafından boşaltılmamış. Öğe bir esnek kabın içine dönüştürüldüğünde, varsayılan esnek elemanlar birlikte gruplanır (eğer kenar boşluğu alanı belirtilmemişse). Boşluklar, marjın değerlerini hesapladıktan sonra eklenir ve esneklik. Herhangi bir öğenin sıfır olmayan bir esneklik veya marj değerine sahipse: Otomatik; Mülkün hiçbir etkisi olmayacak. Mülkiyet miras kalmadı.

Değerler:
Flex-start. Varsayılan değer. Esnek elemanlar, esnek kabın ilk satırından gelen yönde ortaya konur.
Esnek uç. Flex-elements, esnek kabın son çizgisinden gelen yönde ortaya konur.
Merkez Flex elemanları, esnek kabın ortasına hizalanır.
Arasındaki boşluk. Flex elemanları düzgün bir şekilde çizginin üzerine dağıtılır. İlk esnek eleman, başlangıç \u200b\u200bçizgisinin kenarına yerleştirilir, son esnek eleman, son çizginin kenarıyla aynı hizada olup, hattaki kalan esnek elemanlar, herhangi bir iki bitişik eleman arasındaki mesafenin olduğu için dağıtılır. aynısı. Kalan boş alan olumsuz veya dizgede ise, yalnızca bir esnek eleman var, bu değer esnek başlangıç \u200b\u200bparametresiyle aynıdır.
Boşluk. Çizgilerdeki esnek elemanlar, herhangi bir iki bitişik esnek eleman arasındaki mesafenin aynı olması ve ilk / son esnek elemanlar arasındaki mesafe ve esnek kabın kenarları arasındaki mesafe, esnek elemanlar arasındaki mesafeden uzanır.
ilk Varsayılan özellik değerini ayarlar.
kalıtım. Mülkiyetin değerini ebeveyn elementinden devralır.

İncir. 9. GUBIT-Content özelliklerini kullanarak elementlerin ve boş alanın dağılımı

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; -Webkit-Justify-Content: Flex-start; Ekran: Flex; Justify-Content: Flex-start;)

6.2. Enine ekseni hizalayın: Hizalama-Öğeler ve Hizala-Kendini

Flex elemanları, esnek kabın akım çizgisinin enine eksenine hizalanabilir. Hizalama eşyaları, anonim esnek elemanlar da dahil olmak üzere tüm esnek kapsayıcı elemanları için hizalamayı ayarlar. Hizala-Kendini, bireysel esnek elemanlar için bu hizalamayı geçersiz kılar. Enine marj esnek elemanından herhangi biri otomatik olduğunda, hizala kendisinin etkisi yoktur.

6.2.1. Hizalı eşyalar.

Mülkiyet, enine eksendeki anonim esnek elemanlar da dahil olmak üzere esnek elemanları hizalar. Miraslanmadı.

Değerler:
Flex-start.
Esnek uç.
Merkez
Taban çizgisi Hizalama ile ilgili tüm esnek elemanların temel çizgileri çakışır.
Uzatmak.
ilk Varsayılan özellik değerini ayarlar.
kalıtım. Mülkiyetin değerini ebeveyn elementinden devralır.
İncir. 10. Dikey bir kapta elemanların hizalanması

Sözdizimi

Flex-Containge (Ekran: -Webkit-Flex; -Webkit-Hizansa-Öğeler: Flex-Start; Ekran: Flex; Hizalama-Öğeler: Flex-start;)

6.2.2. Hizala-benlik.

Özellik, esnek kabın yüksekliğinde ayrı bir esnek elemanın hizalanmasından sorumludur. Hizalamayı, hizalı eşyalar tarafından belirtilen hizalamayı geçersiz kılar. Miraslanmadı.

Değerler:
OTO. Varsayılan değer. Flex elemanı, Alegn-items Flex Container özelliğinde belirtilen hizalamayı kullanır.
Flex-start. Flex elemanının üst kenarı, enine eksenin başlangıcından geçen esnek çizgiyle (veya bir mesafeden veya bir mesafede) yakın bir şekilde yerleştirilir.
Esnek uç. Esnek elemanın alt kenarı, enine eksenin ucundan geçen esnek çizgiyle (veya bir mesafede, bir mesafeden veya bir mesafede) yakından yerleştirilir.
Merkez Flex elemanı alanları, flex hattı içindeki enine eksen üzerinde ortalanır.
Taban çizgisi Esnek eleman taban çizgisi ile hizalanır.
Uzatmak. Flex elemanının enine boyutu otomatik olarak hesaplanırsa ve kenar boşluğunun enine değerlerinin hiçbiri otomatik olarak eşit değilse, eleman gerilir. Varsayılan değer.
ilk Varsayılan özellik değerini ayarlar.
kalıtım. Mülkiyetin değerini ebeveyn elementinden devralır.

İncir. 11. Bireysel esnek elementlerin hizalanması

Sözdizimi

Flex-Container (Ekran: -Webkit-Flex; Ekran: Flex;) .Flex-item (-Webkit-Hizans-Self: Center; Hizala-Self: Center;)

6.3. Flex Konteyner Hatları: Hizalama İçeriği

Özellik, esnek kaptaki çizgileri, enine eksendeki ek alanın varlığında, aynı şekilde hizalandığına benzer şekilde çizer. bireysel unsurlar Gustify-Content özelliğini kullanarak ana eksende. Tesis, tek çizgili esnek kabı etkilemez. Miraslanmadı.

Değerler:
Flex-start. Satırlar, esnek kabın başlangıcına doğru kaydedilir. İlk satırın kenarı, her bir sonraki satıra yakın, her biri - her bir sonraki satıra yakın olan flex-konteynerin kenarına yakın yerleştirilir.
Esnek uç. Satırlar, esnek kabın ucuna doğru uzanır. Son satırın kenarı, her biri bir sonraki satıra yakın olan her biri - Flex-Conster'ın kenarına yakın yerleştirilir.
Merkez Satırlar, esnek kabın ortasına doğru kaydedilir. Satırlar birbirine yakındır ve esnek kabın içeriğinin ilk kenarı ile Flex kabın içeriğinin son kenarı ile esnek kabın içeriğinin son kenarı arasında eşit bir mesafeye sahip olan flex-konteynerin ortasına hizalanır. Son dize.
Arasındaki boşluk. Satırlar, esnek kabın içinde düzgün bir şekilde dağıtılır. Kalan boş alan negatifse veya esnek kabın yalnızca bir esnek çizgisine sahipse, bu değer esnek başlangıç \u200b\u200bile aynıdır. Aksi takdirde, birinci satırın kenarı, esnek kabın içeriğinin ilk kenarına yakın yerleştirilir, son sıranın kenarı, esnek kabın içeriğinin son kenarına yakındır. Kalan çizgiler, herhangi bir bitişik satır arasındaki mesafenin aynı olması için dağılmıştır.
Boşluk. Satırlar, her iki ucunda da yarım boşlukla esnek kapta düzgün bir şekilde dağıtılır. Kalan boş alan negatifse, bu değer orta merkez ile aynıdır. Aksi takdirde, dizeler, iki bitişik satır arasındaki mesafenin aynı olduğu ve birinci / son satırlar arasındaki mesafenin ve esnek kabın içeriğinin kenarları arasındaki mesafenin, çizgiler arasındaki mesafeden uzağa kadar uzanacağı şekilde dağıtılır.
Uzatmak. Varsayılan değer. Flex elemanlarının satırları, mevcut tüm alanları doldurarak eşit şekilde gerilir. Kalan boş alan negatifse, bu değer esnek başlangıç \u200b\u200bile aynıdır. Aksi takdirde, boş alan, enine boyutlarını arttırarak tüm satırlar arasında eşit olarak ayrılacaktır.
ilk Varsayılan özellik değerini ayarlar.
kalıtım. Mülkiyetin değerini ebeveyn elementinden devralır.
İncir. 12. Esnek elemanların çok satır hizalaması

Sözdizimi

Flex-Containge (Ekran: -Webkit-Flex; -Webkit-Flex-Flex: Sıra Sarma; -Webkit-Hizansa İçeriği: Flex-end; Ekran: Flex; Flex-Flow: Satır Sarma; Hizalama: Flex-end ; Yükseklik: 100px;)

FlexBox Layout Modülü (Esnek Kutu), daha fazlasını sağlamaya yöneliktir. etkili yöntem Konteynırdaki elemanlar arasındaki boş alanın yer, hizalanması ve dağıtılması, boyutları önceden bilinmiyorsa bile ve / veya dinamik (bu nedenle "" Flex "kelimesi).

Esnek (esnek) işaretlemenin temel fikri, elemanlarının genişliğini / yüksekliğini (ve siparişini) değiştirmek için bir kap sağlamaktır. en iyi yol Mevcut alanı doldurun (çoğunlukla her tür ve ebatlarda yerleşim için). FlexBox Container, boş alanı doldurmak için elemanları genişletir veya taşması önlemek için sıkıştırır.

En önemli şey, FlexBox'un normal düzenlerin aksine yönel bir agnostiktir (dikey konumlandırma ve yatay konumlandırmaya dayalı dize elemanlarına dayanan bloklar). Yeterince iyi çalıştıkları gerçeğine rağmen, büyük veya karmaşık uygulamaları desteklemek için esneklikten yoksundur (özellikle oryantasyondaki değişiklikler söz konusu olduğunda, boyutta değişim, germe, sıkıştırma vb.).).

Not. FlexBox, uygulama bileşenleri ve küçük düzenler için daha uygundur, CSS ızgarası daha büyük düzenler için tasarlanmıştır.

Temel ve Terminoloji

FlexBox, tüm bir modül olduğundan, ayrı bir özellik değil, bir bütün özellik grubu da dahil olmak üzere birçok farklı şey içerir. Bazıları kabını kurmak için tasarlanmıştır ("esnek kabın" olarak bilinen ebeveyn elemanı), diğerleri ise çocuk elemanları ile yüklenmelidir ("Flex Elements" olarak bilinir).

Her zamanki düzen sistemi blok ve dize yönlerine dayanırsa, FlexBox "Flex-Flow Talds" üzerine dayanır. Lütfen FlexBox'un temel fikrini açıklayan şartnameden bu çizime bir göz atın.

Temel olarak elemanlar boyunca bulunacak ana eksen (ana başlangıçtan ana uçtan) veya Çapraz eksen (çapraz başlangıçtan çapraz uçtan).

Destek tarayıcıları

CSS Esnek Kutu Düzeni Modülü

Android için krom

Tarayıcı BlackBerry 10 sürümüyle başlayan yeni bir sözdizimini destekler.

Konteyner için Özellikler

Elementler için Özellikler

Ebeveyn elemanının özellikleri (Flex Container)

görüntüle

Esnek kabını belirler; Bir dize veya blok, iletilen değere bağlıdır. Tüm doğrudan, çocuk elemanları için esnek bir bağlam içerir.

Konteyner (Ekran: Flex; / * veya Interline-Flex * /)

Lütfen CSS sütunlarının esnek kabını etkilemediğini unutmayın.

esnek yön.


Ana ekseni ayarlar, böylece kabın içindeki elemanların yönünü belirler. FlexBox (isteğe bağlı sarmalayıcıya ek olarak) tek yönlü bir düzen kavramıdır. Esnek elemanları, öncelikle yatay çizgiler veya dikey hoparlörler olarak düşünün.

Konteyner (Flex-Direction: Sıra | Satır Tersi | Sütun | Sütun-Tersi;)

  • satır (varsayılan) - LTR'ye soldan sağa; RTL'de sağa sola;
  • satır geri. - LTR'de sağdan sola; RTL'de soldan sağa;
  • sütun. - Aynı şey bu satır, sadece yukarıdan aşağıya doğru;
  • sütun gerisi. - Aynı şey satır-ters, sadece aşağıdan yukarıdan;

flex-wrap


Varsayılan olarak, öğeler yalnızca bir satırı doldurmaya çalışacaktır. Bu davranışı değiştirebilir ve gerekirse öğelerin bir sonraki satıra aktarılmasına izin verebilirsiniz.

Konteyner (Flex-Wrap: NowRap | Sarma | Sarma-Tersi;)

  • nowRAP (varsayılan) - Tüm esnek elemanlar bir satırda bulunur;
  • paketlemek. - Flex elemanları birkaç satırda, yukarıdan aşağıya yerleştirilecektir;
  • sarma-ters. - Flex elemanları birkaç çizgiye, aşağıdan yukarıya yerleştirilecektir;

hakikat içeriği


Ana eksen boyunca hizalamayı belirler. Her şey sabitlendikten sonra kalan boş alanın dağıtılmasına yardımcı olur ve genişlik esnek elemanları maksimum boyuta ulaşmıştır. Ayrıca, dizgiyi taşırken elemanların hizalanması üzerine bir miktar kontrolü yapmaya yardımcı olur.

Konteyner (İçeriği Güçlendirin: Flex-Start | Flex-end | Center | Boşluk Arası | Boşluk;)

  • flex-start (varsayılan) - Elementlerin çizginin başına bastırılır;
  • esnek uç. - Elementler dizenin sonuna doğru bastırılır;
  • merkez - Elementler, string boyunca merkezde bulunur;
  • arasındaki boşluk. - Elementler hatta eşit şekilde yerleştirilir; İlk eleman çizginin başlangıcında, son element Çizginin sonunda bulunur;
  • boşluk. - Elemanlar, aynı alanın yanındaki aynı alanla eşit şekilde yerleştirilir. Tüm elemanlar her iki tarafta da aynı boşluğa sahip olduğundan, görsel olarak boşluğun aynı olmadığını lütfen unutmayın. Birinci elemanın, konteyner tarafından bir birim birim olacaktır, ancak bununla bir sonraki unsur arasında iki ünite, çünkü bir sonraki öğenin de iki taraftan bir birim vardır.

hizalı eşyalar.


Bu özellik, flex elemanlarının akım çizgisindeki enine eksen boyunca davranışını belirler. O, sadece enine eksen için (dikey ana eksen) için düşünün.

Konteyner (Hizalamalar: Flex-start | Flex-end | Center | Temel | Streç;)

  • flex-start - Elementler enine eksenin başlangıcına yerleştirilir;
  • flex-end - Elementler, enine eksenin ucuna yerleştirilir;
  • merkez - Elementler, enine eksenin merkezinde bulunur;
  • taban çizgisi - Elementler taban çizgisi ile hizalanır;
  • streç (varsayılan) - Tüm kabı doldurmak için germek (min-genişlik / maksimum genişlik hala gözleniyor);

hizalama içeriği


Not. Bu özellik sadece bir esnek element hattı olduğunda çalışmaz.

Konteyner (hizalama içeriği: Flex-start | Flex-end | Center | Ara-arası | Boşluk | Uzay;)

  • flex-start. - Satırlar, kabın başında bulunur;
  • esnek uç. - Çizgiler kabın ucunda bulunur;
  • merkez - Satırlar konteynerin ortasına yerleştirilir;
  • arasındaki boşluk. - Satırlar eşit olarak dağıtılır, ilk satır, konteynerin başında ve sonunda son satırın başında bulunur;
  • boşluk. - Satırlar eşit şekilde dağıtılır aynı mesafe onların arasında;
  • streç (varsayılan) - Satırlar, kalan alanı işgal etmek için genişliğin karşısında gerilir;

Bağlı ortaklıklar için Özellikler (Flex Elements)

sipariş


Varsayılan olarak, tüm öğeler orijinal sırayla bulunur. Ancak, sipariş özelliği, kabın içindeki elemanların bulunduğu sırayı yönetir.

Ürün (sipariş: ; }

esneklik.


Mülkiyet gerekirse, elemanı büyüklüğündeki artış yeteneğini belirler. Konteynerin içindeki boş alanın miktarının elemanı işgal etmeleri gerektiğini belirleyen bir oran olarak boyutsuz bir değer alır.

Tüm elemanların 1'e yüklenen bir Flex-Grow özelliği varsa, kabın içindeki boş alan tüm elementler arasında eşit olarak dağıtılır. Element değerinden biri 2 olarak ayarlanırsa, eleman diğerlerinden iki kat daha fazla alan olacaktır (en azından deneyin).

Öğe (Flex-Büyümek: ; / * Varsayılan 0 * /)

Negatif sayıları belirtmek imkansızdır.

flex bazlı.

Kalan boşluğun dağılımından önce, varsayılan öğenin boyutunu belirler. Uzunluk (% 20, 5rem, vb.) Olabilir veya anahtar kelime. Otomatik Anahtar Kelime "Genişlik veya Yükseklik Özelliğime Gibi Görünüm" anlamına gelir. İçerik anahtar sözcüğü, "boyutunun elemanın içeriğine dayandığının" olduğu anlamına gelir, ancak henüz çok iyi desteklenmemiştir, bu yüzden kontrol etmek zordur ve Min-Content'in ne olduğunu neyin yaptığını öğrenmesi zordur. İçerik ve uygun içerik.

Öğe (Flex-Esas: | OTO; / * Varsayılan Otomatik * /)

0 olarak ayarlanmışsa, içeriğin etrafındaki ek alan dikkate alınmayacaktır. Otomatik yüklerseniz, ek alan değere göre dağıtılacaktır.

esnek

Bu için bir azalmadır ve. İkinci ve üçüncü parametreler (Flex-Shrink ve Flex bazlı) zorunlu değildir. Varsayılan değer 0 1 Otomatik olarak ayarlanır.

Öğe (Flex: NOT | [<"flex-grow"> <"flex-shrink">? || <"flex-basis"> ] }

hizala-benlik.


Bu özellik, bireysel esnek elemanlar için varsayılan hizalamayı (veya özelliği kullanarak belirtilen) geçersiz kılmanızı sağlar.

Lütfen mevcut değerleri anlamak için özelliklerin açıklanmasına bakın.

Öğe (Hizala-Self: Auto | Flex-start | Flex-End | Flex-end | Centre | Baseline | Stretch;) .Item (Hizala-Self: Auto | Flex-Start | Flex-end | Centre | Temel | Stretch;)

Lütfen şamandıra, net ve dikey hizalamanın esnek eleman üzerinde herhangi bir etkisi olmadığını unutmayın.

Örnek

İle başlayalım basit örnekNeredeyse her gün meydana gelen belirleyici görev: Mükemmel merkez. FlexBox kullanıyorsanız, daha kolay bir şey olmayabilir.

Ebeveyn (Ekran: Flex; Yükseklik: 300px;) .Child (Genişlik: 100px; Yükseklik: 100px; Marj: Otomatik;)

Flex konteynerindeki otomatik olarak takılan marjın ek alan emmesi gerçeğine bağlıdır. Böylece, öğede otomatik olarak dikey kenar boşluğunun montajı, bir öğenin her iki eksende de mükemmel şekilde merkezlenmesini sağlayacaktır.

Şimdi biraz daha özellikleri kullanalım. Estetik terimlerle sabit bir boyuta sahip 6 elementin bir listesini düşünün, ancak otomatik olabilirler. Onları yatay eksen boyunca eşit şekilde dağıtmak istiyoruz ve böylece tarayıcının boyutunu değiştirirken her şey yolundaydı (medya istekleri olmadan!).

Flex-Container (Ekran: Flex; Flex-Flow: Sıra Sarması; Güçlü İçerik: Boşluk;)

Hazır! Her şey sadece bazı tasarım problemleridir. Aşağıda, kodepen üzerinde bir örnektir, oraya gittiğinizden emin olun ve ne olacağını görmek için Windows'un boyutunu değiştirmeyi deneyin.

Başka bir şey deneyelim. Ekranın üstünde sağ kenarda bulunan navigasyon olduğumuzu hayal edin, ancak orta ölçekli ekranlardaki ortada bulunmasını ve küçük ekranlarda bir sütundaydı. Çocuk oyuncağı.

Gezinme (Ekran: Flex; Flex-Flow-Flow: Sıra Sarma; Güçlü İçerik: Flex-End-End;) @Media Hepsi ve (Maksimum Genişlik: 800PX) (.Navigation (Guelify-Content: Space-courc-courc-courc-courc-courcure)) @media ve (maksimum genişlik: 500px) (.Navigasyon (Flex yönü: sütun;)))

Flex elemanlarımızın esnekliğiyle oynarken, daha iyi bir şeyler yapmaya çalışalım! Peki ya ekranın tüm genişliğine bir altbilgi ve bir altbilgi ve bir altbilgi ve elementlerin ilk sırasına bağımlı olmadığı.

Sarıcı (Ekran: Flex; Flex-Flow-Flow: Satır Sarma;) .Ark, .main, .nav, .aside, .Footer (Flex: 1% 100;) @Media Hepsi ve (Min-Genişlik: 600px) (.aside (Flex: 1 Auto;)) @Media Hepsi ve (Min-Genişlik: 800PX) (.Main (Flex: 2 0px;) .Aide-1 (Sipariş: 1;) .Main (Sipariş: 2;) .Side 2 (Sipariş: 3;) .Footer (Sipariş: 4;))

İlgili Özellikler

Hatalar

Tabii ki, FlexBox hatasız değil. Gördüğüm en iyi koleksiyon, Philip Walton ve Greg Whitworth "ın fleksbüsleri tarafından temsil ediliyor. Bu, tüm hataları izlemek için açık bir kaynak yer, bu yüzden sadece bağlantıyı terk etmenin en iyisi olduğunu düşünüyorum.

Sipariş özelliği, çocuk elemanlarının esnek kabın içinde göründüğü sırayı yönetir. Varsayılan olarak, başlangıçta esnek kabına eklenen sırada bulunurlar.

Değerler

.flex-item (sipariş:<целое число>; }

flex Elements, HTML kodunu değiştirmeden bu basit özellik kullanılarak yeniden düzenlenebilir.

Varsayılan değer: 0.

esneklik.

Bu özellik, flex elemanının, pozitif bir boşluk dağıtarken, esnek elemanın, flex kabındaki kalan esnek elemanlara göre ne kadar uzağa bakacağını belirleyen büyüme katsayısını belirler.

Değerler

.flex-item (Flex-Büyümek:<число>; }

Tüm esnek elemanlar aynı esneklik değerine sahipse, tüm elemanlar kabın aynı boyutuna sahip olacaktır.

İkinci esnek eleman, diğer esnek elemanların boyutuna göre daha fazla alan alır.

Varsayılan değer: 0.

flex-Shrink.

flex-Shrink, flex elemanının, negatif boş alanın dağılımı sırasında, esnek kaptaki kalan esnek elemanlara göre ne kadar sıkıştırılacağını belirleyen bir sıkıştırma katsayısı ayarlar.

Değerler

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

Varsayılan olarak, tüm flex elemanları sıkıştırılabilir, ancak Flex-Shrink değerini sıfır (sıkıştırma olmadan) ayarlarsak, elemanlar orijinal boyutunu korur.

Varsayılan değer: 1.

Negatif sayılar kabul edilemez.

flex bazlı.

Bu özellik aynı anlamları genişlik ve yükseklik özellikleri olarak alır ve serbest alan katsayılara uygun olarak dağıtılmadan önce esnek elemanın ilk ana boyutunu tanımlar.

Değerler

.Flex-item (Flex-esası: Otomatik |<ширина>; }

flex-baz, dördüncü esnek eleman için belirtilir ve başlangıç \u200b\u200bboyutunu belirler.

Varsayılan değer: Oto.

esnek

Bu özellik, esnek büyüme, esnek daralma ve esnek bazın özellikleri için bir azalmadır. Diğer değerlerin mahsulü de otomatik olarak yüklenebilir (1 1 AUTO) ve Yoktur (0 0 Otomatik).

Değerler

.Flex-item (Flex: NOT | AUTO | [ ? || ]; }

Varsayılan değer: 0 1 Otomatik.

W3C, bireysel özellikler yerine kısaltılmış Flex özelliğini kullanmanızı önerir, çünkü esnek tipik kullanım için herhangi bir belirsiz bileşenleri doğru şekilde sıfırlar.

hizala-benlik.

Hizalama-kendi kendine özellik, bireysel esnek elemanlar için varsayılan hizalamayı (veya Align-öğeler aracılığıyla belirtilen değeri) geçersiz kılar. Mevcut değerleri anlamak için, esnek kabın için hizalama öğelerinin açıklamasına bakın.

Değerler

.flex-item (Hizala-Self: Auto | Flex-Start | Flex-end | Centre | Temel | Streç;)

Üçüncü ve dördüncü esnek elementler için hizalama, hizalama kendi kendine mülkiyet aracılığıyla geçersiz kılınır.

Modül Flexbox-leuauta (Esnek Kutu - "Esnek Blok", Açık şu an W3C aday tavsiyesi) Görevi, bir konteynırdaki elemanlar arasında serbest alan arasında serbest alan arasında serbest bırakmanın, seviyelendirmenin ve dağıtmanın daha verimli bir şekilde sunulması, boyutları bilinmiyor ve / veya dinamik (dolayısıyla "Esnek" kelimesi).

Konteynerindeki esnek korumanın ana fikri, elementlerinin en iyi doldurulması için elemanlarının genişliğini / yüksekliğini (ve sırasını) değiştirme kabiliyetine sahipti (çoğu durumda - her türlü ekran ve ekran boyutunu desteklemek için ). Flex konteyneri, serbest alanı doldurmak için elemanları uzatır veya sınırı önlemek için bunları sıkıştırır.

En önemli, FlexBox-Leiaut, olağan leaptlerin aksine (dikey olarak yerleştirilmiş bloklar ve satır içi elemanlar yatay olarak) yönüne bağlı değildir. Her zamanki Leiaut web sayfaları için mükemmel olsa da, büyük veya karmaşık uygulamaları desteklemek için (özellikle ekran oryantasyonunu, yeniden boyutlandırma, germe, sıkıştırma vb.) Gibi esneklik (Canalybur) yoktur.

Yorum Yap: FlexBox-Leuaout, uygulamanın ve küçük ölçekli leuautiklerin kompozit parçaları için en uygun, ızgara daha büyük bir ölçekte daha çok kullanılmıştır.

Temel bilgiler

Çünkü FlexBox, tüm modüldür ve sadece tek bir özellik değil, birçok özelliği birleştirir. Bazıları konteynere uygulanmalıdır (ebeveyn elemanı, sözde esnek konteyner), diğer özellikler çocuk elemanlarına uygulanırken veya esnek elemanlar.

Her zamanki leuaout, blok ve satır içi elemanların talimatlarına dayanırsa, Flex-Liaut "Flex-Flow Talds" denir. Bu şemayı, Flex-LeuAitov'un temel fikrini açıklayan şartnameden inceleyin.

Çoğu unsurlar da dağıtılacak ana eksen (dan ana başlangıç. önce ana son.) veya birlikte enine eksen (dan Çapraz başlatma. önce Çapraz sonu.).

  • ana eksen - Flex elemanlarının bulunduğu ana eksen. Not, mutlaka yatay olmaz, hepsi esnek yön özelliğine bağlıdır (aşağıya bakınız).
  • ana başlangıç. | ana son. - Flex elemanları, ana başlangıç \u200b\u200bkonumundan ana uç konumuna bir kaba yerleştirilir.
  • ana boyut. - Seçilen birincil değerine bağlı olarak esnek elemanın genişliği veya yüksekliği. Ana değer, genişlik veya eleman yüksekliği olabilir.
  • Çapraz eksen. - ana olana dik enine eksen. Yönü, ana eksenin yönüne bağlıdır.
  • Çapraz başlatma. | Çapraz sonu. - Esnek satırlar öğelerle doldurulur ve çapraz başlangıç \u200b\u200bkonumundan çapraz uç konumuna bir kapta bulunur.
  • Çapraz boyut - Boyutun boyutuna bağlı olarak, esnek elemanın genişliği veya yüksekliği, bu büyüklüğe eşittir. Bu özellik, boyutun boyutuna bağlı olarak öğenin genişliği veya yüksekliği ile çakışmaktadır.

Özellikleri

ekran: Flex | İnline-flex;

Aşağıdakiler için geçerlidir:

Flex kabını belirler (seçilen değere bağlı olarak, tüm ani torunları için esnek bağlamını bağlar.

Ekran: Diğer Değerler | Flex | İnline-flex;

Aklında tut:

  • CSS sütunları bir esnek kap ile çalışmaz
  • Şamandıra, net ve dikey hizalama esnek elemanlarla çalışmıyor

esnek yön.

Aşağıdakiler için geçerlidir: Ebeveyn elemanı esnek konteyner.

Ana eksenin ana eksenini ayarlar, böylece kabın içine yerleştirilen esnek elemanların yönünü belirler.

Esnek yön: satır | Satır Tersi | Sütun | Sütun gerisi.
  • satır (varsayılan): LTR için soldan sağa, RTL için sağdan sola;
  • satır-Ters: LTR için sağ soldan RTL için soldan sağa;
  • sütun: Satıra benzer, yukarıdan aşağıya;
  • sütun-Ters: Satır-tersine benzer, aşağıdan yukarı.

flex-wrap

Aşağıdakiler için geçerlidir: Ebeveyn elemanı esnek konteyner.

Konteynerin tek satırlı veya çok satırlı olup olmadığını, yanı sıra, yeni çizgilerin nerede olacağı yönü belirleyen enine eksenin yönünü belirler.

Flex-Wrap: NowRap | Sarma | Sarma-ters.
  • nowRAP (varsayılan): LTR için tek satır / soldan sağa, RTL için sağa sola doğru;
  • sarma: LTR için çok satır / soldan sağa, RTL için sağa sola doğru;
  • sarma-Ters: LTR için çok satır / sağ kalan, soldan sağa RTL için.

esnek akış.

Aşağıdakiler için geçerlidir: Ebeveyn elemanı esnek konteyner.

Bu, birlikte ana ve enine ekseni tanımlayan esnek yönün ve esnek sargının özellikleri için bir azalmadır. Varsayılan, satır nowrap değerinin değerini alır.

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

Aşağıdakiler için geçerlidir: Ebeveyn elemanı esnek konteyner.

Ana eksene göre hizalamayı belirler. Satırın elemanları "germe" veya gerilmemesi durumunda kalan boş alanı dağıtmaya yardımcı olur, ancak maksimum boyutunu zaten elde ettiler. Ayrıca, dize serbest bırakıldığında elemanların hizalamasını kontrol etmesini sağlar.

: Flex-start | Flex-end | Merkez | Uzay arası | Boşluk.
  • flex-start: Elementler çizginin başlangıcına kaydırılır;
  • flex-end: Elementler dizenin sonuna kadar kaydırılır;
  • merkez: Elementler çizginin merkezinde hizalanır;
  • uzay arası: Elementler eşit şekilde dağıtılır (hattın başlangıcındaki ilk eleman, sonuncu - sonunda);
  • boşluk: Elemanlar, kendileri ile dizenin sınırları arasında eşit bir mesafeyle eşit bir şekilde dağıtılır.

Aşağıdakiler için geçerlidir: Ebeveyn elemanı esnek konteyner.

Flex elemanları için varsayılan davranışı tanımlar. Geçerli satırdaki enine eksene göre. Enine eksen için (ana bakıma dik) için Justify-Content'in bu sürümünü düşünün.

: Flex-start | Flex-end | Merkez | Taban çizgisi | Uzatmak.
  • flex-start: Öğeler için çapraz başlangıç \u200b\u200bsınırı, çapraz başlangıç \u200b\u200bkonumunda bulunur;
  • flex-end: Öğeler için çapraz uç sınır, çapraz uç konumunda bulunur;
  • merkez: Elementler, enine eksenin merkezinde hizalanır;
  • taban çizgisi: Elementler başlangıçları için hizalanır;
  • streç (varsayılan): elemanlar gerilir, kabın doldurulması (min-genişlik / maksimum genişliği dikkate alarak).

Aşağıdakiler için geçerlidir: Ebeveyn elemanı esnek konteyner.

Flex konteyner çizgilerini, enine eksende boş bir alanın varlığında, aynı şekilde ana eksende yaptığı gibi aynı şekilde aynı şekilde hizalar.

Yorum Yap: Bu özellik, tek satırlı bir FlexBox ile çalışmaz.

: Flex-start | Flex-end | Merkez | Uzay arası | Boşluk | Uzatmak.
  • flex-start: Çizgiler, kabın başlangıcına göre hizalanır;
  • flex-end: Satırlar, kabın sonuna göre hizalanır;
  • merkez: Satırlar, kabın merkezinde hizalanır;
  • uzay arası: satırlar eşit şekilde dağıtılır (hattın başlangıcındaki ilk satır, ikincisi sonunda ise);
  • boşluklar: Satırlar eşit bir mesafeyle eşit şekilde dağıtılır;
  • streç (varsayılan): Satırlar gerilir, boş alanı doldurur.

sipariş

Aşağıdakiler için geçerlidir:

Varsayılan olarak, Flex Elements orijinal sırasına göre bulunur. Ancak, sipariş özelliği konteynerdeki konumlarının sırasını kontrol edebilir.

Sipariş:<tamsayı\u003e

esneklik.

Aşağıdakiler için geçerlidir: Bir kız elemanı / esnek eleman.

Flex elemanının gerektiğinde "büyümesini" belirler. Bir oran olarak hizmet eden endeksli bir değer alır. Konteynerin içindeki boş bir alanın hangi kısmının bir öğeyi işgal edebileceğini belirler.

Tüm öğelerin 1 olarak bir esnek büyüme özelliğine sahipse, her soydan her soyundan kabın içinde aynı boyutta alır. Eğer torunlardan birini 2'ye ayarlarsanız, diğerlerinden iki kat daha fazla alan alacaktır.

Flex-Büyümek:<sayı\u003e (varsayılan 0)

flex-Shrink.

Aşağıdakiler için geçerlidir: Bir kız elemanı / esnek eleman.

Flex elemanının gerekli olup olmadığını sıkıştırabilme yeteneğini belirler.

Flex-Shrink: (Varsayılan 1)

Negatif sayılar kabul edilmez.

flex bazlı.

Aşağıdakiler için geçerlidir: Bir kız elemanı / esnek eleman.

Konteynerdeki boşluk dağılımından önce elemanın varsayılan boyutunu belirler.

Flex bazlı:<uzunluk\u003e | Otomatik (varsayılan otomatik)

esnek

Aşağıdakiler için geçerlidir: Bir kız elemanı / esnek eleman.

Bu, esneklik, esnek daralma ve esnek baz için bir azalmadır. İkinci ve üçüncü parametreler (Flex-Shrink, Flex-Temel) isteğe bağlıdır. Varsayılan değer 0 1 Otomatik'tir.

Flex: Yok | [<"flex-grow" > <"flex-shrink" >? || <"flex-basis" > ]

hizala-benlik.

Aşağıdakiler için geçerlidir: Bir kız elemanı / esnek eleman.

Bireysel esnek elemanlar için varsayılan hizalamayı veya hizalamayı geçersiz kılmanızı sağlar.

Mevcut değerlerin daha iyi anlaşılması için Align-Öğeler özelliğinin açıklamasına bakın.

Hizala-Self: AUTO | Flex-start | Flex-end | Merkez | Taban çizgisi | Uzatmak.

Örnek

Neredeyse her gün meydana gelen çok, çok basit bir örnekle başlayalım: tam olarak merkezde hizalama. FlexBox kullanırsanız daha kolay bir şey yoktur.

.Parent (Ekran: Flex; Yükseklik: 300px; / * Ya da herhangi bir şey * / ) .Child (genişlik: 100px; / * Ya da herhangi bir şey * / Yükseklik: 100px; / * Ya da herhangi bir şey * / Marj: Otomatik; / * Sihir! * /)

Bu örnek, otomatik olarak belirtilen esnek kaptaki kenar boşluğunun gereksiz boşluğu emdiği gerçeğine dayanır, bu nedenle referans görevi bu nedenle elemanı tam olarak her iki eksenin merkezinde de çizer.

Şimdi bazı özellikleri kullanalım. Bir dizi 6 sabit boyutlu eleman (güzellik için), ancak kabın boyutunu değiştirebilme yeteneği sunar. Onları yatay olarak eşit olarak dağıtmak istiyoruz, böylece tarayıcı penceresi yeniden boyutlandırıldığında, her şey iyi görünüyordu (@ Media-Recorder!).

.flex-konteyner ( / * Önce bir esnek bağlam oluşturun * / Ekran: Flex; / * Şimdi akış yönünü tanımlayacağız ve elemanların yeni bir dizgeye aktarılmasını isteyip istemediğimiz *, bunun şu şekilde aynı olduğunu unutmayın: * Flex-yön: satır; * Flex-wrap: Wrap; * / Flex-Flow: Satır Sarma; / * Şimdi boşluğun nasıl olduğunu tanımlarız * / : Boşluk; )

Hazır. Her şey bir kayıt meselesidir. Aşağıda, bu örneği gösteren codepen bulunur. Tarayıcı penceresini germeye / sıkmaya çalıştığınızdan emin olun ve ne olduğunu görür.

Bu kalemi kontrol et!

Başka bir şey deneyelim. Sitemizin en üstünde sağ kenarda hizalanan bir navigasyona ihtiyacımız olduğunu hayal edin, ancak orta ölçekli ekranlar için merkezde hizalanmasını istiyoruz ve küçük bir kolona dönüştürülmesini istiyoruz. Her şey yeterince basit.

/ * Büyük ekranlar * / .Navigation (Ekran: Flex; Flex-Flow: Sıra Sarması; / * Elemanları ana eksendeki hattın sonuna kadar değiştirir * / : Flex-end; ) @Media Hepsi ve (maksimum genişlik: 800px) (.Navigation ( / * Orta boyutlu ekranlar için, navigasyonu merkezdeki navigasyonu hizalıyoruz, elementler arasındaki boş alanı eşit şekilde dağıtıyoruz * / : Boşluk; )) / * Küçük ekranlar * / @Media Hepsi ve (maksimum genişlik: 500px) (.navigation ( / * Bir dize yerine küçük ekranlarda sütundaki elemanlarımız var * / Esnek Yön: Sütun; )) Bu kalemi kontrol edin!

Daha iyi bir şey deneyelim ve esnek elementlerin esnekliğiyle oynayalım! Yönlendirilmiş mobil cihazlar Tam kap ve bodrum katında üç-chone düzeni? Ve başka bir yer siparişi.

.Wrapper (Ekran: Flex; Flex-Flow: Satır Sarma;) / * Tüm unsurları% 100 genişlikte belirtiriz * / .Header, .main, .nav, .aside, .footer (Flex: 1% 100;) / * Bu durumda, * mobil cihazlardaki oryantasyon için orijinal sıraya güveniyoruz: * 1. Başlık * 2. Nav * 3. Ana * 4. Bir yana * 5. Altbilgi * / / * Orta ölçekli ekranlar * / @Media Hepsi ve (min-genişlik: 600px) ( / * Her iki SAGEBAR, bir satırda bulunur * / .aside (Flex: 1 Auto;)) / * Büyük ekranlar * / @Media Hepsi ve (min-genişlik: 800px) ( / * Yerler öğelerini değiştiririz. * / .main (Flex: 2 0px;) .aside-1 (Sipariş: 1;) .Main (Sipariş: 2;) .Side-2 (Sipariş: 3;) .Footer (Sipariş: 4;))

Kısa bir şey söylerseniz, FlexBox'taki düzen bize bir kere zor görevlerin basit çözümleri sunar. Örneğin, dikey elemanı hizalamanız veya bodrumun ekranın altına basın ya da sadece bir satıra birkaç blok yerleştirin, böylece her şeyi boş alan kaplarlar. Bu tür görevler esnek olmadan çözülür. Ancak bir kural olarak, bu çözümler "koltuk değneklerine" daha benzerdir - CSS'yi kullanmak için resepsiyonlar amaçlanmamıştır. Flexbox ile, bu tür görevler tam olarak esnek modelin düşündüğü gibi çözülür.

CSS Esnek Kutu Düzeni Modülü (Esnek Bloklu Modüller İçin CSS Modülü), Kısa FlexBox, Farklı genişlikler ve yükseklik altında uyarlanmış olarak çeşitli HTML yapıları oluştururken ve mantıksal ve basit bir düzen oluştururken çeşitli HTML yapıları oluştururken kusurları kaldırmak için oluşturulur. Ve mantıksal yaklaşım, kural olarak, sonucun kontrol edilmediği beklenmedik yerlerde çalışır - Mantığımız!

FlexBox, konteyner içindeki elemanların en farklı parametrelerini zarif bir şekilde kontrol etmenizi sağlar: yön, sipariş, genişlik, yükseklik, hizalama, boş alanın dağılımı, elemanların gerilmesi ve sıkıştırılması.

Temel bilgi

FlexBox bir kap ve çocuk elemanlarından (öğeler) (esnek elementler) oluşur.

FlexBox, herhangi bir dahil olmak üzere HTML öğesi CSS özellik ekranı atamak için yeterli: Flex; veya ekran: satır içi-flex; .

1
2

Flex özelliklerini açtıktan sonra, konteyner içinde iki eksen oluşturulur: ana ve enine (dik), çapraz eksen). Tüm iç içe geçmiş elemanlar (birinci seviye) ana eksene yerleştirilir. Varsayılan olarak, ana eksen yataydır ve soldan sağa (→) ve çapraz eksen, sırasıyla dikey ve yukarıdan aşağıya doğru yönlendirilir (↓).

Ana ve çapraz eksen yerlerde değiştirilebilir, daha sonra elemanlar üst (↓) üzerine yerleştirilecektir ve yüksekliğe montajı durdurduklarında, soldan sağa doğru hareket edecekler (→) - yani, eksenler sadece yerlerde değiştirilir. . Aynı zamanda, elementlerin yerinin başlangıcı ve sonu değişmez - yalnızca yol tarifleri (eksen) değişimi! Bu yüzden kabın içindeki ekseni hayal etmeniz gerekir. Ancak, orada bazı "fiziksel" eksenlerin olduğunu ve bir şeyi etkilediğini düşünmek gerekli değildir. Buradaki eksen sadece kabın içindeki elemanların hareket yönüdür. Örneğin, ana eksenin ortasındaki elemanların hizalamasını gösterdiyseniz ve daha sonra bu ana eksenin yönünü değiştirirsek, değişecek ve hizalayacaktır: elemanlar yatay olarak idi ve dikey olarak ortada çeliktaydı .. . Örneğe bakın.

Esnek kutunun bir diğer önemli özelliği, enine yönde bir satırın varlığıdır. Ne hakkında konuştuğumuzu anlamak için, bir ana yatay eksen, birçok element olduğunu ve kabın içine "tırmanma" olduğunu düşünelim, bu yüzden başka bir satıra giderler. Şunlar. Konteyner şöyle görünür: Konteyner, içinde iki sıra, her satırda birkaç eleman için. Sundu? Şimdi, dikey olarak yalnızca öğeleri değil aynı zamanda satırları da hizalayabileceğimizin hatırladım! Mülkiyet örneğinde nasıl görünüyor? Ve böylece şematik görünüyor:

CSS özellikleriMizanpaj yapımı modelini etkileyebilecek: float, net, dikey hizala, sütunlar esnek tasarımda çalışmıyor. Bir düzen oluşturmak için başka bir model kullanır ve bu CSS özellikleri basitçe göz ardı edilir.

CSS özellikleri FlexBox

FlexBox, tüm esnek tasarımını kontrol etmek için farklı CSS kuralları içerir. Bazılarının ana kabına uygulanması gerekirken, diğerleri bu kabın unsurlarına.

Konteyner için

Görüntüle:

Öğe için Flex özelliğini içerir. Bu özellik altında, içine yatırılan öğe düşer: sadece birinci seviyenin soyundan gelenler etkilenir - kabın esnemesinin unsurları olacaklar.

  • esnek - Öğe tüm genişliğe gerilir ve çevresindeki bloklar arasında tam boşluğuna sahiptir. Kürek başında ve bloğun sonunda gerçekleşir.
  • İnline-flex - Öğe, diğer öğeler tarafından düzenlenir. Bu durumda, iç kısmı bir blok elemanı olarak biçimlendirilir ve elemanın kendisi yerleşik gibidir.

flex ve Inline-Flex, ekran gibi çevresel elemanlarla farklı şekilde etkileşime giren, ekran: blok ve ekran: satır içi blok.

Flex yönü:

Kabın ana ekseninin yönünü değiştirir. Enine eksen buna göre değişir.

  • satır (varsayılan) - Soldan sağa (→) öğelerinin yönü
  • sütun. - Üstten aşağıya doğru elemanların yönü (↓)
  • satır geri. - Sağ soldaki elementlerin yönü (←)
  • sütun gerisi. - alttan yukarıdan () öğelerinin yönü
Flex-wrap:

Konteynere razmin edilmeyen elemanların transferini yönetir.

  • nowRAP (varsayılan) - İç içe geçmiş elemanlar bir satırda (yönde \u003d satır sırasında) veya bir sütunda (yönde \u003d sütun sırasında), kabın içine yerleştirilip yerleştirilmediğinden bağımsız olarak bulunur.
  • paketlemek. - Konteynere yerleştirilmezlerse, öğelerin bir sonraki satıra aktarılmasını içerir. Bu, enine eksen üzerindeki elemanların hareketini içerir.
  • sarma-ters. - Ayrıca sadece transferi sarın, (ters yönde) yoktur.
Flex-Flow: Yön sargısı

Hem esnek yön hem de esnek sarma özelliklerini birleştirir. Genellikle birlikte kullanılırlar, böylece esnek akış özelliği daha az kod yazmak için oluşturulmuştur.

flex-Flow, bir boşlukla ayrılmış, iki özelliğin değerlerini kabul eder. Veya herhangi bir mülkün bir değerini belirleyebilirsiniz.

/ * Sadece esnek yön * / Flex-flow: satır; Flex-Flow: Satır-ters; Flex-Flow: Sütun; Flex-Flow: Sütun-geri; / * Sadece Flex-Wrap * / Flex-Flow: NowRAP; Flex-Flow: Wrap; Flex-Flow: Sarma-Tersi; / * Hemen hemen anlamlar: Flex yönü ve esnek sarma * / Flex-flow: satır nowrap; Flex-Flow: Sütun Sarması; Flex-Flow: Sütun-geri sarma-ters; Justify-Content:

Elemanları ana eksene hizalaştırır: eğer yön \u003d satır, sonra yatay olarak ve eğer yön \u003d sütun, sonra dikey olarak.

  • flex-start (varsayılan) - Öğeler baştan çıkacak (sonunda bir yer olabilir).
  • esnek uç. - Elementler bir son olarak eşitlenir (yer başlangıçta kalır)
  • merkez - merkezde (yer sol ve sağ kalacak)
  • arasındaki boşluk. - Aşırı elemanlar kenarlara bastırılır (elemanlar arasındaki yer eşit şekilde dağıtılır)
  • boşluk. - Boş alan, elemanlar arasında eşit olarak dağılmıştır (aşırı elemanlar kenarlara basılmaz). Kabın kenarı ile aşırı elementler arasındaki boşluk, satırın ortasındaki elemanlar arasındaki boşluktan iki kat daha az olacaktır.
  • uzay-eşit olarak
Hizalama içeriği:

Enine eksen üzerindeki unsurların bulunduğu sıraları hizaladılar. Sadece zıt eksen için haklı olarak içerikle aynı.

Not: En az 2 satır olduğunda çalışır, yani. Sadece 1 sıra varsa hiçbir şey olmuyor.

Şunlar. Esnek yön: Satır, bu özellik görünmez satırları dikey olarak hizalayacaktır.. Bloğun yükselmesinin katı bir şekilde ayarlanması gerektiğini ve aksi halde satırların kendileri kabı gerecek ve hizalamaları anlamını kaybettiğini not etmek önemlidir ve bunları aralarında boş bir alan yoktur. . Ancak esnek yön: sütun, daha sonra satırlar yatay olarak hareket eder ve kabın genişliği neredeyse her zaman seri genişliğinden daha büyüktür ve satırların hizalaması hemen anlamını elde eder ...

  • streç (varsayılan) - Dizeyi tamamen doldurur.
  • flex-start. - Satırlar konteynerin üstünde gruplandırılır (sonunda bir yer olabilir).
  • esnek uç. - Satırlar kabın dibinde gruplandırılır (yer başlangıçta kalır)
  • merkez - Satırlar kabın ortasında gruplandırılır (yer kenarlarda kalır)
  • arasındaki boşluk. - Aşırı satırlar kenarlara doğru bastırılır (satırlar arasındaki yer eşit şekilde dağıtılır)
  • boşluk. - Serbest alan, satırlar arasında eşit olarak dağıtılır (aşırı elemanlar kenarlara doğru basılmaz). Kabın kenarı ile aşırı elementler arasındaki boşluk, satırın ortasındaki elemanlar arasındaki boşluktan iki kat daha az olacaktır.
  • uzay-eşit olarak - Ayrıca boşluk etrafındaki, yalnızca aşırı elemanların kabın kenarlarına olan mesafe, elementler arasındaki aynıdır.
Hizala-Öğeler:

Elemanları satırın içindeki enine eksendeki (görünmez satır) hizalaştırır. Şunlar. Satırların kendileri hizalı içerik ve bu satırlardaki elemanlar (dizeler) hizalı-öğeler ve tüm bunlar enine eksende hizalanır. Ana eksenden böyle bir ayrım yoktur, seri ve elementlerin hakikat içeriği ile hizalandığı hiçbir kavram yoktur.

  • streç (varsayılan) - Dizeyi tamamen doldurur.
  • flex-start. - Elementler satırın başına bastırılır
  • esnek uç. - Elementler, satırın sonuna kadar bastırılır.
  • merkez - elemanlar satırın merkezinde tesviyedir
  • taban çizgisi - Elementler temel metin tarafından hizalanır

Konteyner elemanları için

Flex-Büyümek:

Elemanın kabın içinde boş bir alan varlığında artan faktörü belirtir. Varsayılan esnek büyüme: 0 yani. Elemanların hiçbiri, kapta boş bir alanı artırmalı ve doldurmalıdır.

Varsayılan Flex-Büyümek: 0

  • Tüm unsurlar esnek büyüyünceyi gösterirse: 1, hepsi eşit şekilde uzanır ve konteynerdeki her şeyi boş alan doldurun.
  • Eğer elemanlardan biri esnek büyüyü gösteriyorsa: 1, o zaman kabın içindeki tüm boş alanları dolduracak ve haklı çıkarma işleri aracılığıyla hizalamayı doldurur.
  • Flex-büyüdüğünde: 1. Bunlardan biri esneklikte olursa: 2, diğerlerinden 2 kat daha fazla olacak
  • Esnek kabın içindeki tüm esnek bloklar esnek büyüyünse: 3, o zaman aynı boyutta olacaklar
  • Esneklik ile: 3. Bunlardan biri esneklikte olursa: 12, herkesten 4 kat daha fazla olacak

Nasıl çalışır? Kabin, 500 piksel genişliğe sahip olduğunu varsayalım ve her biri 100px'lik bir temel genişliğe sahip olan iki element içerdiğini varsayalım. Bu nedenle, konteynerde 300 serbest piksel kalır. Şimdi, Flex-Büyümeyi belirtirseniz: 2 birinci eleman; ve ikinci esnek büyüyün: 1; Bloklar mevcut konteynır genişliğini tamamlayacak ve ilk bloğun genişliği 300px ve ikinci 200px olacaktır. Bu, konteynerdeki mevcut 300 piksel boş alanın, birinci ve + 100px saniyenin 2: 1, + 200px oranındaki elemanlar arasında dağıtıldığı gerçeğiyle açıklanmaktadır.

Not: Belirttiğiniz değerde kesirli sayılar, örneğin: 0.5 - Flex-Büyümek: 0.5

Flex-Shrink:

Eleman azaltma faktörünü belirtir. Özellik, zıt esnekliktir ve kabın içinde boş bir alan yoksa, elemanın nasıl sıkıştırılması gerektiğini belirler. Şunlar. Mülkiyet, tüm elemanların boyutlarının toplamı, kabın boyutundan daha büyük olduğunda çalışmaya başlar.

Varsayılan Flex-Shrink: 1

Konteynerin 600 piksel genişliğe sahip olduğunu varsayalım ve her biri 300 piksel genişliğe sahip - Flex bazlı: 300px; . Şunlar. İki eleman kabı tamamen doldurur. İlk eleman, Flex-Shrink: 2'yi gösterecektir; ve ikinci flex-shrink: 1; . Şimdi konteynerin genişliğini 300px, yani. Elementler, kabın içine yerleştirilecek 300px ile olmalıdır. 2: 1 oranında sıkıştırılacaklar, yani. Birinci birim 200px'e katılacak ve ikinci ila 100px ve elementlerin yeni boyutları 100px ve 200px olacaktır.

Not: Değer altında, kesirli sayıları belirleyebilirsiniz, örneğin: 0.5 - Flex-Shrink: 0.5

Flex bazlı:

Elemanın temel genişliğini ayarlar - elemanın genişliğini etkileyen kalan koşullardan önceki genişlik hesaplanır. Değer PX, EM, REM,%, VW, VH, vb. Son genişlik, temel genişliğine ve esneklik, esnek daralma ve bloğun içindeki içeriğin değerlerine bağlı olacaktır. Otomatik olarak, eleman içindeki içeriğe göre temel bir genişlik alır.

Varsayılan: Otomatik

Bazen öğenin genişliğini normal genişlik özelliğinden sert bir şekilde monte etmek daha iyidir. Örneğin, genişlik:% 50; Bununla birlikte, kabın içindeki elemanın tam olarak% 50 olacağı anlamına gelecektir, ancak esnek büyüme ve esnek daralma özellikleri de çalışacaktır. Bu, eleman, bunun içindeki içerikle gerildiğinde, daha fazla esnek olarak belirtildiğinde gerekli olabilir. Misal.

flex-baz, gerilme ve sıkıştırma sıfırlama işlemi: Flex-esası: 200px; Flex-Büyümek: 0; Flex-Shrink: 0; . Bütün bunlar esnek olarak yazılabilir: 0 0 200px; .

Flex: (küçülme esasına göre büyüyün)

Üç özellikten kısa kayıt: Flex-büyümek esnek daralma esnekliği.

Varsayılan: Flex: 0 1 Otomatik

Ancak, bir ve iki değer belirleyebilirsiniz:

Flex: Yok; / * 0 0 Otomatik * / / * Number * / Flex: 2; / * Flex-Büyümek (Flex-baz'a 0) * / / * Number * / Flex: 10EM; / * Flex baz: 10EM * / Flex: 30px; / * Flex baz: 30px * / Flex: AUTO; / * Flex baz: Otomatik * / Flex: İçerik; / * Flex esası: İçerik * / Flex: 1 30px; / * Flex-büyümek ve esnek baz * / Flex: 2 2; / * Flex-Büyümek ve Flex-Shrink (Flex-Baz 0) * / Flex: 2 2% 10; / * Flex-Büyümek ve Flex-Shrink ve Flex-baz * / Hizala-Kendi:

Yalnızca ayrı bir öğe için Align-öğe özelliğini değiştirmenize olanak sağlar.

Varsayılan: Hizalama öğelerinden

  • uzatmak. - Öğe, ipi tamamen doldurulur.
  • flex-start. - Eleman çizginin başına bastırılır
  • esnek uç. - eleman dizgenin sonuna doğru bastırılır
  • merkez - eleman çizginin merkezinde seviyelendirilir
  • taban çizgisi - Öğe, metnin temel çizgisi ile hizalanır.

Sipariş:

Genel satırdaki öğenin siparişini (konum, konum) değiştirmenizi sağlar.

Varsayılan: Sipariş: 0

Varsayılan olarak, öğelerin siparişi vardır: 0 ve HTML kodunda ve satır yönünde görünümlerinin sırasını koyun. Ancak, sipariş özelliğinin değerini değiştirirseniz, öğeler değerlerin sırasına göre inşa edilecektir: -1 0 1 2 3 .... Örneğin, öğelerden biri siparişi gösterirse: 1, sonra önce sıfıra ve ardından 1'den bir öğe olacaksınız.

Bu nedenle, örneğin, diğer elemanların veya HTML kodunun hareket yönünü değiştirmezken, sonuna dönüşecek bir birinci eleman mümkündür.

Notlar

Flex bazlı genişlik arasındaki fark nedir?

Flex bazlı ve genişlik / yükseklik arasındaki önemli farklılıkların altında:

    flex-baz sadece ana eksen için çalışır. Bu, esnek yönü: sıra esnek bazını, genişliği (genişliği) kontrol eder ve esnek yön: sütun yüksekliği (yükseklik) kontrol eder. .

    flex baz sadece esnek elemanlar için geçerlidir. Bu nedenle, konteynerdeki esnemeyi devre dışı bırakırsanız, bu özelliğin etkisi olmaz.

    Konteynerin mutlak elemanları, esnek tasarıma katılmaz ... ve bu nedenle esnek baz, kesinlikle yerleştirilirse, esnek kabın elemanlarını etkilemez: Mutlak. Genişlik / yükseklik belirlemeleri gerekecektir.

  • Flex özellikleri 3 değerleri kullanırken (Flex-Büyümek / Flex-Shrink / Flex-Essen), kısa bir şekilde birleştirebilir ve yazabilirsiniz ve genişlik büyümesi veya küçültülmesi için ayrı ayrı yazmanız gerekir. Örneğin: Flex: 0 0% 50 \u003d\u003d Genişlik:% 50; Flex-Shrink: 0; . Bazen sadece uygunsuz.

Mümkünse, hala tercih esnekliği verir. Sadece esnek baz uygun olmadığında genişlik kullanın.

Farklılıklar Flex bazlı genişlikten - böcek veya FICH?

Esnek elemanın içindeki içerik onu keser ve sınırlarının ötesine geçemez. Bununla birlikte, genişliği genişlik veya maksimum genişlik yoluyla ayarlarsanız ve esnek baz, esnek kabın içindeki eleman bu konteynerin ötesine geçebilecek (bazen bu davranışa ihtiyacınız olur). Misal:

Flex düzeninin örnekleri

Örneklerde, her yerde çapraz tarayıcı için önek kullanır. Uygun okuma CSS için yaptım. Bu nedenle, en son örnekleri görün. chrome sürümleri veya Firefox.

# 1 dikey hizalama ve yatay ile basit bir örnek

En basit örneğe başlayalım - aynı anda ve bloğun herhangi bir yüksekliğinde, hatta kauçuğun herhangi bir yüksekliğinde dikey ve yatay olarak seviyelendirmeye başlayalım.

Orta metin

Ya da öyleyse, içinde blok olmadan:

Orta metin

# 1.2 Esnek bloğun elemanları arasındaki ayrım (boşluk)

Konteynerin elemanlarını kenarlara konumlandırmak ve keyfi olarak elemanı seçtikten sonra, bir mola verilecek olanı seçmeniz gerekir, BAĞLANTISI SOL özelliğini kullanmanız gerekir: Otomatik veya Marj-sağ: Otomatik

Flex # 2 Uyarlanabilir Menü

Sayfanın en üstünde bir menü yapın. Geniş bir ekranda doğru olmalı. Ortalama olarak, ortada hizalanır. Ve küçük bir öğede yeni bir çizgide olmalıdır.

# 3 Adaptif 3 Sütun

Bu örnek, daralma sırasında 2 ve sonra 1'e dönüşecek 3 sütun ne kadar hızlı ve rahatça yaptığını göstermektedir.

Lütfen bunun tüm flex'te medya kuralları kullanmadan yapabileceğini unutmayın.

1
2
3
4
5
6

JSFiddle.net'e gidin ve "Sonuç" bölümünün genişliğini değiştirin

Flex üzerinde # 4 Uyarlanabilir Bloklar

Bir büyük ve iki küçük bir 3 blok çekmemiz gerektiğini varsayalım. Aynı zamanda, blokların küçük ekranlara sığması gerekir. Yapmak:

1
2
3

JSFiddle.net'e gidin ve "Sonuç" bölümünün genişliğini değiştirin

Flex ve Geçiş # 5 Galeri

Bu örnek, esnek üzerine resimlerle güzel bir göz akordeonunu ne kadar çabuk yapabileceğinizi gösterir. Flex için geçiş özelliğine dikkat edin.

# 6 Flex Flex (sadece bir örnek)

Görev esnek bir blok yapın. Böylece, her bloktaki metnin başlangıcı aynı yatay çizgiydeydi. Şunlar. Genişliğin genişliği ile bloklar yükseklikte büyür. Resmin üstte olduğu, düğmenin her zaman alt katta olması gerekir ve ortadaki metin bir yatay çizgide başladı ...

Bu sorunu çözmek için, blokların kendileri esneklikle gerilir ve mümkün olan maksimum genişlik yüklenir. Her iç birim de esnek yönde, bir tasarıma sahip bir esnektir: sütun; ve ortadaki eleman (metnin bulunduğu yer) esnek büyüyünce gerilmiştir: 1; Tüm boş alanları doldurmak için sonuç elde edilir - metin bir satırla başladı ...

Daha fazla örnek

Tarayıcı Desteği - 98.3%

Tabii ki, tam bir destek yok, ama her şey modern tarayıcılar FlexBox tasarımlarını destekleyin. Bazıları için, yine de önekleri belirtmeniz gerekir. Gerçek bir resim için, Caniuse.com'a bakın ve bugün kullanılan tarayıcının% 96,3'ünün% 98.3 ön ekleri ile önek olmadan çalışacağını görün. Bu, FlexBox'ı cesurca kullanmak için harika bir göstergedir.

Hangi ön eklerin bugünün uygun olduğunu bilmek (Haziran 2019), ile tüm esnek kurallara bir örnek vereceğim gerekli önekler:

/ * Konteyner * / .flex (Ekran: -Webkit-Box; Ekran: -MS-FlexBox; Ekran: Flex; Ekran: -Webkit-Inline-Box; Ekran: -MS-Inline-FlexBox; Ekran: Inline-Flex; -Webkit-Box-Orient: Dikey; -Webkit-Box-Direction: Normal; -MS-Flex-Direction: Sütun; Flex-Direction: Sütun; -MS-Flex-wrap: Sarma; -Fleks-Akış: Sütun Sarması; Flex-Flow: Sütun Sarması; -WebKit-Box-Pack: Justify; -MS-Flex-Pack: Justify; GaspiLify-Content: Boşluk; -MS-Flex-Line-Pack: Dağıtmak; hizalama içeriği: boşluk;) / * Elements * / .flex-item (-Webkit-Box-Flex: 1; -MS-Flex-pozitif: 1; Flex-Büyümek: 1; -MS-Flex- Negatif: 2; Flex-Shrink: 2; -MS-Flex-Tercih Edilen Boyut: 100PX; Flex-Temel: 100px; -MS-Flex: 1 2 100PX; Flex: 1 2 100PX; -MS-Flex-item-hizala; : Merkez; Hizala-Self: Center; -Webkit-Box-ordinal grup: 3; -MS-Flex-Sipariş: 2; Sipariş: 2;)

Prefix'teki özelliklerin orijinal özelliğe gidecesi daha iyidir.
Bugün (Caniuse tarafından) önekleri (Caniuse tarafından) gereksiz yoktur, ancak genel olarak daha fazla önek.

Krom. Safari. Firefox. Opera. Yani Android iOS.
20- (eski) 3.1+ (eski) 2-21 (eski) 10 (Tweeer) 2.1+ (eski) 3.2+ (eski)
21+ (yeni) 6.1+ (yeni) 22+ (yeni) 12.1+ (yeni) 11+ (yeni) 4.4+ (Yeni) 7.1+ (yeni)
  • (Yeni) - Yeni Sözdizimi: Ekran: Flex; .
  • (Tweener) - Eski resmi olmayan sözdizimi 2011: Ekran: FlexBox; .
  • (Eski) - Eski Sözdizimi 2009: Ekran: Kutu;

Video

Videoyu unutma, bazen de ilginç ve anlaşılabilir. İşte birkaç popüler:

Flex için kullanışlı bağlantılar

    flexBoxFroggy.com - FlexBox Eğitim oyunu.

    Flexplorer, görsel bir esnek kod tasarımcısıdır.