Menu

CSS justify-content ve align-items: Bütün Değerler

justify-content flex öğelerini ana eksen boyunca, align-items ise çapraz eksen boyunca yerleştirir. Her değeri yan yana ve ölçülmüş halde, tıklanabilir bir hizalama ızgarası, align-self ve justify-content'in bazen neden hiçbir şey yapmadığının nedenleriyle gör.

Bu sayfada çalıştırılabilir editörler var - düzenle, çalıştır ve sonucu anında gör.

Her biri tek cümlede justify-content ve align-items

Bir flex kapsayıcıda justify-content öğeleri ana eksen boyunca (satır boyunca) dağıtır, align-items ise onları çapraz eksen üzerinde (satırın aşağısı ve yukarısı boyunca) hizalar. İkisi de kapsayıcıya yazılır:

Kutu iki yönde de ortalanmış: başlangıç ve bitiş kenarlarına, üst ve alt kenarlara eşit uzaklıkta. height: 140px'i kaldır, align-items: center'ın yapacak bir işi kalmaz, çünkü kapsayıcı öğenin kendi yüksekliğine küçülür.

Bütün justify-content değerleri, ölçülmüş

Aşağıdaki her satır aynı üç öğe, farklı bir justify-content ile. Her satırın üstündeki etiketteki sayılar tarayıcının bıraktığı boşluklar: ilk öğeden önce, öğeler arasında ve son öğeden sonra.

Kapsayıcı 420px ve öğeler 180px kaplıyor, yani 240px boş alan var. Nereye gittiği:

DeğerBoş alan nereye giderDemodaki boşluklar
flex-start (ve start)tamamı öğelerden sonra0 / 0 / 0 / 240
centeryarısı önce, yarısı sonra120 / 0 / 0 / 120
flex-end (ve end)tamamı öğelerden önce240 / 0 / 0 / 0
space-betweenyalnızca öğeler arasına0 / 120 / 120 / 0
space-aroundher öğenin iki yanına eşit, bu yüzden kenarlar yarısını alır40 / 80 / 80 / 40
space-evenlykenarlar dahil her boşluk eşit60 / 60 / 60 / 60

flex-start flex yönünü, start ise yazı yönünü takip eder. Yalnızca row-reverse ya da column-reverse ile farklılaşırlar; orada flex-start ters çevrilmiş uçtadır.

Bütün align-items değerleri

align-items satırın karşısında çalışır. Aşağıdaki öğelerin yükseklikleri farklı, böylece her değerin onlarla ne yaptığını görebilirsin:

DeğerÇapraz eksende ne olur
stretch (varsayılan)Yüksekliği ayarlanmamış öğeler kapsayıcıyı dolduracak şekilde büyür
flex-start (ve start)Öğeler kendi yüksekliklerinde üstte durur
centerÖğeler kendi yüksekliklerinde ortalanır
flex-end (ve end)Öğeler altta durur
baselineÖğeler, metinlerinin ilk satırları tek bir taban çizgisini paylaşacak şekilde kayar

baseline kutusunda üç "Ag" etiketi, ilki daha büyük ve ikincisinin üstünde padding olmasına rağmen tek bir çizgide duruyor. Büyük bir başlığı küçük metinle ya da bir etiketi bir input'la karıştıran bir satır için doğru değer budur.

Tıkla ve hizala

3'e 3 ızgaranın herhangi bir hücresine tıkla. Kutu oraya gider ve onu oraya koyan CSS aşağıda yazdırılır:

Seçicinin satırları align-items'ı, sütunları justify-content'i değiştirir. Ortadaki hücre klasik "div ortalama"dır.

Bir sütunda ikisi yer değiştirir

justify-content her zaman ana ekseni takip eder. flex-direction: column ile ana eksen dikeydir, bu yüzden justify-content öğeleri yukarı aşağı, align-items ise yana taşır:

Karıştırırsan düzeni baştan yazmak yerine iki özelliğin yerini değiştir.

align-self ve auto margin'ler: yalnızca tek öğe

Bir öğedeki align-self, o öğe için align-items'ı ezer. Flexbox'ta justify-self yoktur; tek bir öğeyi ana eksen boyunca taşımak için ona o taraftaki bütün boş alanı alan bir auto margin ver:

Yeşil öğe tek başına alta iniyor, kehribar rengi öğe ise satırın en sonuna itiliyor; diğerleri başta kalıyor.

Birden fazla satır olduğunda: align-content

align-items öğeleri kendi satırlarının içinde hizalar. Bir kapsayıcı birkaç satıra kırıldığında align-content satırların kendisini aralar ve justify-content ile aynı değerleri alır. Tek satırı her zaman kapsayıcının yüksekliğini dolduran nowrap bir kapsayıcıda hiçbir şey yapmaz. Onu flex-wrap sayfası gösteriyor.

Sık yapılan hatalar

  • Eksenleri karıştırmak. justify-content akış yönüdür, align-items onun karşısıdır. Bir sütunda dikey ortalama justify-content: center'dır.
  • Boş alan yok. flex: 1 olan bir öğe bütün alanı alır, bu yüzden justify-content'in dağıtacak bir şeyi kalmaz. Kapsayıcı inline-flex olup tam olarak öğeleri kadar geniş olduğunda da aynısı olur.
  • align-items için yükseklik yok. İçeriği kadar uzun bir kapsayıcı hizalanacak bir şey bırakmaz. Bir height ya da min-height ver.
  • Flexbox'ta justify-self aramak. Orada yok sayılır. Öğeye margin-inline-start: auto (ya da margin-left: auto) ver.
  • Esnemeyen align-items: stretch. Kendi height değeri olan bir öğe onu korur. Yüksekliği kaldır (bir minimum gerekiyorsa min-height kullan).
  • Özellikleri öğelere vermek. İkisi de flex kapsayıcıya yazılır. Bir öğeye yalnızca align-self yazılır.

Sıkça Sorulan Sorular

justify-content ile align-items arasındaki fark nedir?

justify-content öğeleri ana eksen, yani aktıkları yön boyunca dağıtır (flex-direction: row için yatay). align-items ise onları çapraz eksen boyunca konumlandırır (bir satır için dikey). Bir sütunda ikisi yer değiştirir: justify-content dikey olur.

space-between, space-around ve space-evenly arasındaki fark nedir?

space-between ilk öğeden önce ve son öğeden sonra boşluk bırakmaz, geri kalanı öğeler arasında paylaştırır. space-around her öğeye iki yanında eşit boşluk verir, bu yüzden kenarlar yarım boşluk alır. space-evenly kenarlar dahil her boşluğu eşit yapar.

justify-content neden çalışmıyor?

Genellikle dağıtılacak boş alan yoktur: bir öğede flex-grow ya da flex: 1 vardır ya da kapsayıcı yalnızca öğeleri kadar geniştir (örneğin display: inline-flex ya da float edilmiş bir kapsayıcı). Ayrıca display: flex'in öğelere değil ebeveyne verildiğini kontrol et.

align-items center neden dikeyde ortalamıyor?

Kapsayıcı büyük olasılıkla tam olarak içeriği kadar uzundur, bu yüzden içinde ortalanacak bir şey yoktur. Flex kapsayıcıya bir yükseklik ya da min-height ver, öğeler ortasına gider.

align-self ne işe yarar?

align-self, tek bir öğe için kapsayıcının align-items değerini ezer. Örneğin bir çocuğa verilen align-self: flex-end, diğerleri align-items'ın koyduğu yerde kalırken yalnızca o çocuğu çapraz eksenin sonuna taşır.

Flexbox'ta justify-self var mı?

Hayır. Flexbox justify-self'i yok sayar, çünkü ana eksen bütün öğeler tarafından paylaşılır. Tek bir öğeyi ana eksen boyunca itmek için margin-inline-start: auto gibi bir auto margin kullan. justify-self grid'de çalışır.

Coddy programming languages illustration

Coddy ile kodlamayı öğren

BAŞLA