Flexbox nedir? Tüm CSS özelliklerinin açıklaması, temel ilkeler, avantajlar ve dezavantajlar. Flexbox ile çalışmak için bazı yararlı örnekler Flex'teki Yararlı bağlantılar
Flexbox'lar, içeriklerine bakılmaksızın tüm sütunların tam yükseklikte olması gereken üç sütunlu, sözde "Kutsal Kase" düzeni gibi yaygın olarak kullanılan web sitesi düzenlerini oluşturmak için idealdir. Aynı zamanda kaynak kodunda ana içerik gezinmeden önce gelir ve sayfanın kendisinde ana içerik gezinmeden sonra gelir.
Bunun gibi.
Flexbox'tan önce bu düzeni bazı hileler kullanmadan elde etmek oldukça zordu. İçerik miktarına veya ekran boyutuna bakılmaksızın her şeyin doğru şekilde sıralanmasını sağlamak için geliştiriciler sıklıkla ekstra işaretleme eklemek, negatif kenar boşlukları uygulamak ve diğer hileler yapmak zorunda kalıyordu. Ancak yukarıdaki örnekte de görüldüğü gibi Flexbox'ta her şey çok daha basit çıkıyor.
İşte kodun bir özeti. Bu örnekte #main öğesini esnek bir kap haline getiriyoruz ve üstbilgi ve altbilgiyi blok öğeleri olarak bırakıyoruz. Yani sadece orta kısım flexbox oluyor. İşte onu esnek bir kap haline getiren bir pasaj.
#main ( ekran: esnek; minimum yükseklik: calc(100vh - 40vh); )
Esnek bir kap oluşturmak için sadece display: flex'i kullanın. Ayrıca calc() işlevini kullanarak minimum yüksekliği ayarladığımızı ve #main'i görünüm yüksekliğinin %100'üne ayarladığımızı unutmayın. eksi başlığın ve tabanın yüksekliği (her biri 20vh). Bu, çok az içerik olsa bile düzenin ekranın tüm yüksekliğini doldurmasını sağlar. Sonuç olarak, içerik ekranın yüksekliğinden daha az yer kaplıyorsa altbilgi hiçbir zaman yükselmez ve altında boş alan bırakmaz.
Tüm öğelere box-sizing: border-box uyguladığımız göz önüne alındığında, minimum yüksekliğin hesaplanması oldukça basitti. Bunu yapmasaydık şunu eklememiz gerekirdi: dolgu değeriçıkarılacak miktara kadar.
Esnek konteyneri kurduktan sonra esnek elemanlarla ilgileniyoruz.
#main > makale ( flex: 1; ) #main > nav, #main > kenara ( flex: 0 0 20vw; arka plan: beige; ) #main > nav ( order: -1; )
Flex özelliği, flex-grow, flex-shrink ve flex-basis özelliklerinin kısaltmasıdır. İlk durumda, yalnızca bir değer yazdık, dolayısıyla flex, flex-grow özelliğini ayarlar. İkinci durumda, üç değeri de yazdık.
Bu makalede esnek web sayfası düzenleri oluşturmak için tasarlanmış CSS Flexbox teknolojisini tanıtacağız.
CSS Flexbox'ın Amacı
CSS Flexbox içindir esnek düzenler oluşturma. Bu teknolojiyi kullanarak, bir kap içindeki elemanları çok basit ve esnek bir şekilde düzenleyebilir, aralarındaki mevcut alanı dağıtabilir ve belirli boyutları olmasa bile bunları bir şekilde hizalayabilirsiniz.
CSS Flexbox, duyarlı tasarımlar oluşturmayı Float ve konumlandırmayı kullanmaktan çok daha kolay hale getirir.
Flexbox, hem bir sayfanın tamamının CSS işaretlemesi hem de tek tek blokları için kullanılabilir.
CSS Flexbox için tarayıcı desteği
CSS Flexbox, şu anda kullanımda olan tüm modern tarayıcılar tarafından desteklenmektedir (ön ekleri kullanan: 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 Temelleri
Flexbox kullanarak CSS işaretlemesi oluşturmak, gerekli HTML öğesinin CSS görüntüleme özelliğinin flex veya flex-inline olarak ayarlanmasıyla başlar.
Bundan sonra bu öğe esnek bir kap haline gelir ve tüm özellikleri doğrudan alt öğeler esnek öğelerdir. Üstelik flexbox'tan bahsettiğimizde bununla yalnızca display:flex veya display:flex-inline içeren bir öğeyi ve tüm öğeleri kastediyoruz direkt olarak içinde yer alır. Bu nedenle, CSS Flexbox'ta yalnızca iki tür öğe vardır: esnek kap ve esnek öğe.
Çoğu tarayıcıdaki düzeni desteklemek için CSS'ye önek ve maksimum genişlik özellikleri eklendi.
Bir bloğu esnek bir kaba "dönüştürmek" için satır sınıfını kullanın. Esnek bir kapsayıcı içindeki .col__article ve .col__aside flex öğelerinin genişliğinin ayarlanması, flex CSS özelliği kullanılarak yapılır.
Örnek olarak, flexbox kullanarak başka bir altbilgiyi işaretleyelim ve .col__article öğesinde üç öğeden oluşan bir blok oluşturalım (bir öğenin minimum genişliği 300 pikseldir). Altbilgiye dört blok yerleştireceğiz (bir bloğun minimum genişliği 200 pikseldir).
FlexBox'tan bahsetmek istiyorum. Flexbox yerleşim modülü (esnek kutu, şu anda bir W3C Aday Önerisi), boyutları bilinmese ve/veya dinamik olsa bile, bir kaptaki öğeler arasındaki boş alanın yerleşimi, hizalanması ve dağıtımı için daha verimli bir yol sunmayı amaçlamaktadır (bu nedenle kelime "esnek").
Esnek düzenin ana fikri, konteynere, alanı daha iyi doldurmak için (çoğu durumda tüm ekran türlerini ve ekran boyutlarını desteklemek için) öğelerinin genişliğini/yüksekliğini (ve sırasını) değiştirme yeteneği kazandırmaktır.Esnek bir kap, elemanları alanı dolduracak şekilde uzatır veya taşmalarını önlemek için sıkıştırır.
En önemlisi, esnek kutu düzeni, geleneksel düzenlerden (dikey olarak düzenlenmiş bloklar ve yatay olarak düzenlenmiş satır içi öğeler) farklı olarak yöne bağlı değildir.Düzenli düzen web sayfaları için harika olsa da, büyük veya karmaşık uygulamaları (özellikle ekran yönünü değiştirme, yeniden boyutlandırma, uzatma, küçültme vb. söz konusu olduğunda) destekleme esnekliğinden yoksundur..
Çünkü flexbox tek bir özellik değil, bütün bir modüldür, birçok özelliği birleştirir.Bunlardan bazılarının kaba (esnek kap adı verilen ana öğe) uygulanması gerekirken, diğer özelliklerin alt öğelere veya esnek öğelere uygulanması gerekir.
Düzenli düzen, blok ve satır içi elemanların akış yönlerini temel alırken, esnek düzen "esnek akış yönlerini" temel alır.
Esnek Kutu
Temel olarak, elemanlar ya ana eksen boyunca (ana başlangıçtan ana uca) ya da enine eksen boyunca (çapraz başlangıçtan çapraz uca) dağıtılacaktır.
ana eksen — esnek elemanların yerleştirildiği ana eksen.Lütfen yatay olması gerektiğini unutmayın; her şey yaslama içeriğinin kalitesine bağlıdır.
ana başlangıç | ana uç - esnek elemanlar, ana başlangıç konumundan ana uç konumuna kadar kaba yerleştirilir.
ana boyut — seçilen ana boyuta bağlı olarak esnek elemanın genişliği veya yüksekliği.Temel miktar, elemanın genişliği veya yüksekliği olabilir.
çapraz eksen - ana eksene dik enine eksen.Yönü ana eksenin yönüne bağlıdır.
çapraz başlangıç | çapraz uç - esnek çizgiler elemanlarla doldurulur ve çapraz başlangıç konumundan ve çapraz uç konumundan kaba yerleştirilir.
çapraz boyut — seçilen boyuta bağlı olarak esnek elemanın genişliği veya yüksekliği bu değere eşittir.Bu özellik, seçilen boyuta bağlı olarak elemanın genişliği veya yüksekliği ile aynıdır.
Özellikler
ekran: esnek | satır içi esnek;
Esnek bir kapsayıcı tanımlar (seçilen değere bağlı olarak satır içi veya blok), tüm yakın alt öğeleri için esnek bir bağlam bağlar.
ekran: diğer değerler | esnek | satır içi esnek;
Aklında tut:
CSS sütunları esnek kapla çalışmıyorkayan nokta, temizleme ve dikey hizalama esnek öğelerle çalışmaz
esnek yön
Esnek kapsayıcının ana öğesinden önce uygulanır.
Ana ekseni ayarlar, böylece kaba yerleştirilen esnek öğelerin yönünü tanımlar.
esnek yön: satır | satır-ters | sütun | sütun-ters
satır (varsayılan): ltr için soldan sağa, rtl için sağdan sola;
satır-ters: ltr için sağdan sola, rtl için soldan sağa;
Sütun: satıra benzer, yukarıdan aşağıya;
sütun-tersine: satır tersine benzer, aşağıdan yukarıya doğru.
esnek ambalaj
Esnek kapsayıcının ana öğesinden önce uygulanır.
Konteynerin tek hatlı mı yoksa çok hatlı mı olacağını ve çapraz eksenin yönünü belirler, yeni hatların hangi yöne yerleştirileceğini belirler.
esnek sarma: şimdirap | sarma | sarma-ters
nowrap (varsayılan): tek satır / ltr için soldan sağa, rtl için sağdan sola;
sarma: çok satırlı / ltr için soldan sağa, rtl için sağdan sola;
sarma-tersine: ltr için çok satırlı / sağdan sola, rtl için soldan sağa.
esnek akış
Esnek kapsayıcının ana öğesinden önce uygulanır.
Bu, ana ve çapraz eksenleri birlikte tanımlayan esnek yön ve esnek sarma özelliklerinin kısaltmasıdır.Varsayılan değer row nowrap'tir.
esnek akış< ‘flex-direction’> || < ‘Flex-wrap’>
haklı içerik
Esnek kapsayıcının ana öğesinden önce uygulanır.
Ana eksene göre hizalamayı tanımlar.Çizgi öğelerinin "uzamadığı" veya esnemediği ancak zaten maksimum boyutlarına ulaştığı durumlarda boş alanın dağıtılmasına yardımcı olur.Ayrıca öğelerin çizginin ötesine geçtiğinde hizalanması üzerinde bir miktar kontrol sağlar.
içeriği yasla: esnek başlangıç | esnek uçlu | merkez | aradaki boşluk | uzay çevresinde
esnek başlangıç (varsayılan): öğeler satırın başına taşınır;
flex-end: öğeler satırın sonuna taşınır;
merkez: öğeler çizginin ortasına hizalanır;
aradaki boşluk: öğeler eşit olarak dağıtılır (ilk öğe satırın başında, son öğe satırın sonunda)
Etrafında boşluk: Öğeler birbirleri arasında ve çizginin dışında eşit mesafeyle eşit olarak dağıtılır.
haklı içerik
öğeleri hizala
Esnek kapsayıcının ana öğesinden önce uygulanır.
Esnek öğelerin geçerli satırdaki çapraz eksene göre nasıl konumlandırılacağına ilişkin varsayılan davranışı tanımlar.Bunu çapraz eksen için (ana eksene dik) yaslama içeriğinin bir versiyonu olarak düşünün.
hizalama öğeleri: esnek başlangıç | esnek uçlu | merkez | temel | uzatmak
esnek başlangıç: çapraz başlangıç konumunda bulunan öğeler için çapraz başlangıç sınırı;
esnek uç: çapraz uç konumda bulunan elemanlar için çapraz uç kenarlığı;
merkez: elemanlar çapraz eksenin merkezine hizalanır;
taban çizgisi: öğeler taban çizgisine hizalanır;
streç (varsayılan): öğeler kabı dolduracak şekilde gerilir (minimum genişlik / maksimum genişlik dikkate alınarak).
öğeleri hizala
içeriği hizala
Esnek kapsayıcının ana öğesinden önce uygulanır. Ana eksende justify-content'in yaptığına benzer şekilde, çapraz eksende boş alan olduğunda esnek konteynerin satırlarını hizalar. Not: Bu özellik tek hatlı esnek kutularla çalışmaz.
hizalama içeriği: esnek başlangıç | esnek uçlu | merkez | aradaki boşluk | uzay çevresinde | uzatmak
esnek başlangıç: çizgiler kabın başlangıcına göre hizalanır;
esnek uç: çizgiler kabın ucuna göre hizalanır;
merkez: çizgiler kabın merkezine hizalanır;
aradaki boşluk: satırlar eşit olarak dağıtılır (ilk satır satırın başında, son satır sonunda)
Etrafında boşluk: çizgiler, aralarında eşit mesafe olacak şekilde eşit olarak dağıtılır;
uzatma (varsayılan): Satırlar mevcut alanı dolduracak şekilde uzatılır.
içeriği hizala
emir
Varsayılan olarak esnek öğeler orijinal sıralarına göre düzenlenir.Ancak order özelliği bunların kapsayıcıda görünme sırasını kontrol edebilir.
sipariş 1
esnek büyüme
Alt öğe/esnek öğe için geçerlidir. Esnek bir elemanın gerektiğinde "büyüme" yeteneğini tanımlar.Boyutsuz bir değer alır ve orantı görevi görür.Bir elemanın konteyner içinde ne kadar boş alan kaplayabileceğini belirler. Tüm öğelerin flex-grow özelliği 1'e ayarlanmışsa, her çocuk kabın içinde aynı boyutu alacaktır.Çocuklardan birini 2'ye ayarlarsanız diğerlerine göre iki kat daha fazla yer kaplayacaktır.
esnek büyüme
esnek-küçültme
Alt öğe/esnek öğe için geçerlidir.
Esnek bir öğenin gerektiğinde küçülme yeteneğini tanımlar.
esnek-küçültme
Negatif sayılar kabul edilmez.
esnek tabanlı
Alt öğe/esnek öğe için geçerlidir. Kapta yer ayırmadan önce bir öğenin varsayılan boyutunu tanımlar.
esnek tabanlı
esnek
Alt öğe/esnek öğe için geçerlidir. Bu, flex-grow, flex-shrink ve flex-baz'ın kısaltmasıdır.İkinci ve üçüncü parametreler (esnek küçültme, esnek temel) isteğe bağlıdır.Varsayılan değer 0 1 otomatiktir.
esnek: yok | [< ‘Flex-grow «> <» flex-shrink’>? || < ‘Flex-basis’>]
kendini hizala
Alt öğe/esnek öğe için geçerlidir. Bireysel esnek öğeler için varsayılan veya öğe hizalama hizalamasını geçersiz kılmanıza olanak tanır. Mevcut değerlerin daha iyi anlaşılması için align-items özelliğinin açıklamasına bakın.
kendini hizala: otomatik | esnek başlangıç | esnek uçlu | merkez | temel | uzatmak
Örnekler
Hemen hemen her gün karşılaşılan çok çok basit bir örnekle başlayalım: tam merkeze hizalamak.Flexbox kullanırsanız hiçbir şey daha kolay olamaz.
Parent ( display: flex; height: 300px; ) .child ( width: 100px; / * Her ne ise * / yükseklik: 100px; / * Ne olursa olsun * / marj: auto; / * Büyü! * / )
Bu örnek, esnek kapsayıcının altındaki kenar boşluğunun otomatik olarak ayarlandığında fazladan yer kapladığı gerçeğine dayanır, bu nedenle bu şekilde girintileme görevi, öğeyi her iki eksende tam olarak ortalayarak hizalayacaktır. Şimdi bazı özellikleri kullanalım.Sabit boyutta (güzellik için), ancak kabı yeniden boyutlandırabilme özelliğine sahip 6 öğeden oluşan bir set düşünün.Tarayıcı penceresini yeniden boyutlandırdığımızda her şeyin iyi görünmesi için bunları yatay olarak eşit şekilde dağıtmak istiyoruz (@media sorgusu yok!).
Esnek konteyner (
/ * Öncelikle esnek bir bağlam oluşturalım * /
ekran: esnek;
/* Şimdi akışın yönünü ve elemanları isteyip istemediğimizi belirleyelim.
yeni bir hatta taşındı
*Bunun şununla aynı olduğunu unutmayın:
* Esnek yön: satır;
* Esnek sarma: sarma;
* /
esnek akış: satır sarma;
/ * Şimdi alanın nasıl dağıtılacağını belirleyelim * /
}
Hazır. Geriye kalan her şey kayıt meselesidir. Başka bir şey deneyelim.Sitemizin en üstünde sağa hizalanmış bir gezinme istediğimizi, ancak orta boyutlu ekranlarda bunun ortaya hizalanmasını ve küçük ekranlarda tek bir sütun haline gelmesini istediğimizi düşünün.Her şey oldukça basit.
/ * Büyük ekranlar * /
.navigasyon(
ekran: esnek;
esnek akış: satır sarma;
/* Elemanları ana eksen boyunca satırın sonuna kaydırır * /
yasla-içerik: esnek uç;
}
medyanın tümü ve (maks. genişlik: 800 piksel) (
.navigasyon(
/* Orta boy ekranlar için navigasyonu ortalıyoruz,
boş alanı elemanlar arasında eşit olarak dağıtma * /
yasla-içerik: boşluk-etrafında;
}
}
/*Küçük Ekranlar*/
medyanın tümü ve (maks. genişlik: 500 piksel) (
.navigasyon(
/ * Küçük ekranlarda satır yerine öğeleri sütun halinde düzenleriz * /
esnek yön: sütun;
}
}
Esnek öğelerin esnekliğiyle oynayalım!Tam genişlikte üstbilgi ve altbilgiye sahip, mobil uyumlu üç sütunlu bir düzene ne dersiniz?Ve farklı bir düzenleme sırasında.
Paketleyici (
ekran: esnek;
esnek akış: satır sarma;
}
/ * Tüm Öğeleri %100 genişliğe ayarla * /
.başlık, .ana, .nav, .kenar, .altbilgi (
%1100 esnek;
}
/* Bu durumda bize rehberlik edecek orijinal düzene güveniyoruz
* Mobil cihazlar:
* 1 başlık
* 2 gezinme
* 3 ana
* 4 bir yana
* 5 altbilgi
* /
/*Orta ekranlar*/
medyanın tümü ve (minimum genişlik: 600 piksel) (
/ * Her iki kenar çubuğu da aynı satırda bulunur * /
.kenara (esnek: 1 otomatik; )
}
/ * Büyük ekranlar * /
Flexbox, CSS'de mizanpajlar oluştururken çok çeşitli sorunları çözmek için haklı olarak başarılı bir girişim olarak adlandırılabilir. Ancak açıklamasına geçmeden önce, şu anda kullandığımız düzen yöntemlerinde neyin yanlış olduğunu bulalım.
Herhangi bir düzen tasarımcısı, bir şeyi dikey olarak hizalamanın veya lastik gibi bir orta sütunla 3 sütunlu bir düzen oluşturmanın birkaç yolunu bilir. Ancak tüm bu yöntemlerin oldukça tuhaf olduğunu, hack gibi göründüğünü, her durumda uygun olmadığını, anlaşılmasının zor olduğunu ve tarihsel olarak gelişen bazı büyülü koşullar karşılanmadığı takdirde işe yaramadığını kabul edelim.
Bunun nedeni html ve css'nin evrimsel olarak gelişmesiydi. Başlangıçta, web sayfaları tek iş parçacıklı metin belgeleri gibi görünüyordu, bir süre sonra sayfayı bloklara bölmek tablolarla yapıldı, daha sonra kayan noktalı düzenlerle düzenlemek moda oldu ve ie6'nın resmi ölümünden sonra satır içi blok teknikleri ortaya çıktı. ayrıca ekledi. Sonuç olarak, mevcut tüm web sayfalarının %99,9'unun mizanpajlarını oluşturmak için kullanılan tüm bu tekniklerin patlayıcı bir karışımını miras aldık.
Esnek bir konteyner içindeki blokların çok hatlı organizasyonu.
esnek ambalaj
Yukarıda verdiğimiz tüm örnekler blokların tek satırlı (tek sütunlu) düzeni dikkate alınarak yapılmıştır. Varsayılan olarak esnek bir konteynerin blokları her zaman kendi içinde tek bir satırda düzenleyeceği söylenmelidir. Ancak spesifikasyon aynı zamanda çok hatlı modu da destekler. Flex-wrap CSS özelliği, esnek bir kap içindeki çok satırlı içerikten sorumludur.
Mevcut değerler esnek ambalaj:
- şimdi rap (varsayılan değer): bloklar soldan sağa tek satırda düzenlenir (rtl'de sağdan sola)
- sarma: bloklar birkaç yatay sıra halinde düzenlenir (eğer bir sıraya sığmazlarsa). Birbirlerini soldan sağa takip ederler (rtl'de sağdan sola)
- sarma-ters: aynı dürüm ancak bloklar ters sırada düzenlenmiştir.
esnek akış, esnek yön + esnek sarma için kullanışlı bir kısaltmadır
Temel olarak esnek akış, ana ve çok hatlı enine eksenin yönünü tek bir özellikte tanımlama yeteneği sağlar. Varsayılan esnek akış: row nowrap .
esnek akış:<‘flex-direction’> || <‘flex-wrap’>
CSS
/* yani. ... */ .my-flex-block( flex-direcion:column; flex-wrap: sarma; ) /* bu şununla aynıdır... */ .my-flex-block( flex-flow: sütun sarma )içeriği hizala
Ayrıca, ortaya çıkan blok sıralarının dikey olarak nasıl hizalanacağını ve esnek kabın tüm alanını nasıl böleceklerini belirleyen bir align-content özelliği de vardır.
Önemli: align-content yalnızca çok satırlı modda çalışır (örn. flex-wrap:wrap; veya flex-wrap:wrap-reverse; durumunda)
Mevcut değerler içeriği hizala:
- flex-start: blok sıraları esnek kabın başlangıcına bastırılır.
- esnek uç: blok sıraları esnek kabın sonuna kadar bastırılır
- merkez: blok sıraları esnek konteynerin merkezindedir
- aradaki boşluk: ilk blok sırası esnek konteynerin başında bulunur, son blok sırası uçtadır, diğer tüm sıralar kalan alana eşit olarak dağıtılır.
- etrafında boşluk: blok sıraları, esnek kabın başından sonuna kadar eşit olarak dağıtılır ve tüm mevcut alan eşit olarak bölünür.
- uzatmak (varsayılan değer): Blok sıraları tüm kullanılabilir alanı kaplayacak şekilde uzatılmıştır.
CSS özellikleri flex-wrap ve align-content, flex konteynerin alt öğelerine değil doğrudan uygulanmalıdır.
Flex'te çok hatlı özelliklerin demosu
Esnek konteynerin alt öğeleri için CSS kuralları (esnek bloklar)
flex-basis – tek bir esnek bloğun temel boyutu
Diğer esnek faktörlere dayalı dönüşümler ona uygulanmadan önce esnek bir blok için başlangıç ana eksen boyutunu ayarlar. Herhangi bir uzunluk biriminde (px, em, %, ...) veya otomatik (varsayılan) olarak belirtilebilir. Otomatik olarak ayarlanırsa blok boyutları (genişlik, yükseklik) temel alınır ve bu da açıkça belirtilmediği takdirde içeriğin boyutuna bağlı olabilir.
flex-grow – tek bir esnek bloğun “açgözlülüğü”
Gerekirse, tek bir esnek bloğun bitişik öğelerden ne kadar daha büyük olabileceğini belirler. flex-grow boyutsuz bir değeri kabul eder (varsayılan 0)
örnek 1:
- Esnek bir kap içindeki tüm esnek kutular flex-grow:1'e sahipse aynı boyutta olacaktır
- Bunlardan biri flex-grow:2'ye sahipse, diğerlerinden 2 kat daha büyük olacaktır
Örnek 2:
- Esnek bir kap içindeki tüm esnek kutular flex-grow:3'e sahipse aynı boyutta olacaktır
- Bunlardan biri flex-grow:12'ye sahipse, diğerlerinden 4 kat daha büyük olacaktır.
Yani, flex-grow'un mutlak değeri tam genişliği belirlemez. Aynı seviyedeki diğer esnek bloklara göre “açgözlülük” derecesini belirler.
flex-shrink – tek bir esnek bloğun “sıkıştırılabilirlik” faktörü
Yeterli boş alan yoksa esnek bloğun esnek konteyner içindeki bitişik öğelere göre ne kadar küçüleceğini belirler. Varsayılan 1'dir.
flex – flex-grow, flex-shrink ve flex-base özelliklerinin kısaltması
esnek: yok | [<"flex-grow"> <"flex-shrink">? || <"flex-basis"> ]
CSS
/* yani. ... */ .my-flex-block( flex-grow:12; flex-shrink:3; flex base: 30em; ) /* bu şununla aynıdır... */ .my-flex-block( flex : 12 3 30em )Esnek büyüme, esnek küçültme ve esnek temel için demo
align-self – tek bir esnek bloğun enine eksen boyunca hizalanması.
Bireysel bir esnek blok için esnek konteynerin align-items özelliğini geçersiz kılmayı mümkün kılar.
Mevcut align-self değerleri (hizalama öğeleriyle aynı 5 seçenek)
- esnek başlangıç: esnek blok enine eksenin başlangıcına kadar bastırılır
- esnek uç: esnek blok çapraz eksenin ucuna doğru bastırılır
- merkez: esnek blok çapraz eksenin merkezinde bulunur
- taban çizgisi: esnek blok taban çizgisine hizalanır
- uzatmak (varsayılan değer): Esnek blok, ayarlanmışsa minimum genişlik / maksimum genişlik dikkate alınarak çapraz eksen boyunca mevcut tüm alanı kaplayacak şekilde gerilir.
sipariş - esnek bir konteyner içindeki tek bir esnek bloğun sırası.
Varsayılan olarak tüm bloklar html'de belirtilen sırayla birbirini takip edecektir. Ancak bu sıra, order özelliği kullanılarak değiştirilebilir. Bir tamsayı olarak belirtilir ve varsayılan olarak 0'dır.
Sıra değeri, öğenin dizideki mutlak konumunu belirtmez. Elemanın konumunun ağırlığını belirler.
HTML'
Bu durumda bloklar ana eksen boyunca birbiri ardına şu sırayla takip edecektir: öğe5, öğe1, öğe3, öğe4, öğe2.
Kendini hizalama ve düzen için demo
kenar boşluğu: otomatik dikey olarak. Hayaller Gerçekleşiyor!
Flexbox'ı en azından marj:auto aracılığıyla tanıdık yatay hizalamanın dikeyler için de çalıştığı için sevebilirsiniz!
My-flex-container ( display: flex; height: 300px; /* Veya her neyse */ ) .my-flex-block ( width: 100px; /* Veya her neyse */ height: 100px; /* Ya da her neyse * / kenar boşluğu: auto; /* Büyü! Blok dikey ve yatay olarak ortalanır */ )
Hatırlanacak şeyler
- Gerekmedikçe flexbox kullanmamalısınız.
- Bölgeleri tanımlamak ve içeriğin sırasını değiştirmek çoğu durumda sayfa yapısına bağımlı hale getirmek için yine de faydalıdır. İyice düşünün.
- Flexbox'ı anlayın ve temel bilgileri öğrenin. Bu, beklenen sonuca ulaşmayı çok daha kolaylaştırır.
- Kenar boşluklarını unutmayın. Eksen hizalaması ayarlanırken bunlar dikkate alınır. Flexbox'taki kenar boşluklarının normal akışta olduğu gibi "çökmediğini" unutmamak da önemlidir.
- Flex blokların float değeri dikkate alınmaz ve hiçbir anlamı yoktur. Bu muhtemelen bir şekilde flexbox'a geçerken zarif bir bozulma için kullanılabilir.
- Flexbox, web bileşenlerinin ve web sayfalarının ayrı bölümlerinin düzeni için çok uygundur, ancak temel düzenleri (makalenin konumu, üst bilgi, alt bilgi, gezinme çubuğu vb.) düzenlerken en iyi yönünü göstermemiştir. Bu hala tartışmalı bir nokta, ancak bu makale eksiklikleri oldukça ikna edici bir şekilde gösteriyor xanthir.com/blog/b4580
Nihayet
Flexbox'ın elbette diğer tüm yerleşim yöntemlerinin yerini almayacağını düşünüyorum, ancak elbette yakın gelecekte çok sayıda görevi çözmede değerli bir yer işgal edecek. Ve tabii ki şimdi onunla çalışmayı denemelisin. Aşağıdaki makalelerden biri esnek düzen ile çalışmanın belirli örneklerine ayrılacaktır. Haberlere abone olun ;)
align-content özelliği, boş alan olması durumunda esnek kap içindeki çizgilerin enine eksen boyunca hizalanma türünü belirtir.
Şunlar için geçerlidir:: esnek kap.
Varsayılan değer: uzatmak.
Esnek başlangıç Çizgiler enine eksenin başlangıcında bulunur. Sonraki her satır bir öncekiyle aynı hizadadır. flex-end Satırlar çapraz eksenin sonundan başlayarak yerleştirilir. Önceki her satır bir sonrakiyle aynı hizadadır. merkez Çizgiler kabın ortasına yerleştirilir. space-between Çizgiler kap içerisinde eşit olarak dağılmıştır ve aralarındaki mesafe aynıdır. boşluk-etrafında Çizgiler, iki bitişik çizgi arasındaki boşluk aynı olacak şekilde eşit aralıklarla yerleştirilmiştir. İlk satırdan önceki ve son satırdan sonraki boşluk, iki bitişik satır arasındaki boşluğun yarısına eşittir. boşluk-eşit Satırlar eşit olarak dağıtılır. İlk satırdan önceki ve son satırdan sonraki beyaz boşluk diğer satırlarla aynı genişliktedir. uzatma Çizgiler mevcut alanı doldurmak için eşit şekilde gerilir.
align-content özelliği, justify-content'in ana eksen içindeki tek tek öğeleri nasıl hizaladığına benzer şekilde, çapraz eksende fazladan boşluk olduğunda esnek kapsayıcının çizgilerini esnek kapsayıcı içinde hizalar. Bu özelliğin tek hatlı esnek konteyner üzerinde hiçbir etkisi olmadığını unutmayın. Değerler aşağıdaki anlamlara sahiptir:
Not: Yalnızca çok hatlı esnek kaplarda çapraz eksende çizgilerin hizalanması için boş alan bulunur, çünkü tek hatlı esnek kaplarda tek hat otomatik olarak boşluğu dolduracak şekilde uzar.
Şunlar için geçerlidir::esnek kaplar.
İlk: uzatmak.
Esnek Başlangıç Hatları esnek konteynerin başlangıcına doğru paketlenir. Esnek kapsayıcıdaki ilk satırın çapraz başlangıç kenarı, esnek kapsayıcının çapraz başlangıç kenarıyla aynı hizada yerleştirilir ve sonraki her satır, bir önceki satırla aynı hizada yerleştirilir. esnek uç Hatlar esnek kabın sonuna doğru paketlenir. Son satırın çapraz uç kenarı, esnek kabın çapraz uç kenarıyla aynı hizada yerleştirilir ve önceki her satır, bir sonraki satırla aynı hizada yerleştirilir. merkez Çizgiler esnek kabın merkezine doğru paketlenir. Esnek kaptaki çizgiler birbirleriyle aynı hizada yerleştirilir ve esnek kabın ortasında hizalanır; esnek kabın çapraz başlangıç içerik kenarı ile esnek kaptaki ilk satır arasında ve esnek kaptaki ilk satır arasında eşit miktarda boşluk bulunur. esnek kabın çapraz uç içerik kenarı ve esnek kabın son satırı. (Kalan boş alan negatifse, çizgiler her iki yönde de eşit şekilde taşacaktır.) Aradaki boşluk Çizgiler esnek kapta eşit olarak dağıtılır. Kalan boş alan negatifse bu değer esnek başlangıçla aynıdır. Aksi takdirde, esnek kapsayıcıdaki ilk satırın çapraz başlangıç kenarı, esnek kapsayıcının çapraz başlangıç içerik kenarıyla aynı hizada yerleştirilir; esnek kaptaki son satırın çapraz başlangıç kenarı, esnek kapsayıcıdaki çapraz başlangıç içerik kenarıyla aynı hizada yerleştirilir. Esnek kabın uç içerik kenarı ve esnek kapta kalan çizgiler, herhangi iki bitişik çizgi arasındaki boşluk aynı olacak şekilde dağıtılır. boşluk-etrafındaki çizgiler esnek kap içinde her iki uçta yarım boyutlu boşluklarla eşit olarak dağıtılır. Kalan boş alan negatifse bu değer merkezle aynıdır. Aksi halde, esnek kaptaki çizgiler, herhangi iki bitişik çizgi arasındaki mesafe aynı olacak ve ilk/son çizgiler ile esnek kap kenarları arasındaki boşluk, esnek çizgiler arasındaki aralığın yarısı kadar olacak şekilde dağıtılır. uzay-eşit şekilde Çizgiler esnek kapta eşit şekilde dağıtılır. Kalan boş alan negatifse bu değer merkezle aynıdır. Aksi takdirde esnek kaptaki çizgiler, her esnek çizgi arasındaki aralık aynı olacak şekilde dağıtılır. uzat Çizgiler kalan alanı kaplayacak şekilde uzar. Kalan boş alan negatifse bu değer esnek başlangıçla aynıdır. Aksi takdirde, boş alan tüm çizgiler arasında eşit olarak bölünerek çapraz boyutları artırılır.