35 puan yazan xguru 2024-09-03 | 29 yorum | WhatsApp'ta paylaş
  • CSS, sonunda varsayılan yerleşime align-content ekleyerek tek bir CSS özelliği satırıyla dikey hizalamayı mümkün kıldı
    • Desteklenen sürümler: Chrome 123, Firefox 125, Safari 17.4
  • Şu ana kadar temel yerleşimde (flow) align-content çalışmadığı için flexbox ya da grid’e geçmek gerekiyordu
    • 2024’te tarayıcılar sonunda Flow yerleşiminde align-content desteğini uyguladı
    • Artık flexbox veya grid olmadan, yalnızca tek bir CSS özelliğiyle hizalama yapılabiliyor
    • Bu yüzden içeriği ayrıca bir div ile sarmaya gerek yok

Dikey hizalamanın tarihi

  • Tarayıcılarda dikey hizalama için uzun süre basit bir yöntem yoktu

Yöntem 1: tablo hücresi

  • Mantıklılık (Sanity): ★★★☆☆
  • flow (varsayılan), table, flexbox, grid olmak üzere 4 ana yerleşim var ve içerik hizalama yerleşime göre değişiyor
  • flexbox ve grid daha sonra eklendiği için başlangıçta table kullanılıyordu
<div style="display: table;">  
  <div style="display: table-cell; vertical-align: middle;">  
    Content.  
  </div>  
</div>  

Yöntem 2: absolute konumlandırma

  • Mantıklılık: ☆☆☆☆☆
  • flow yerleşimi yardımcı olmadığı için absolute konumlandırma ile dolaylı bir çözüm kullanılıyordu
<div style="position: relative;">  
  <div style="position: absolute; top: 50%; transform: translateY(-50%);">  
    Content.  
  </div>  
</div>  

Yöntem 3: satır içi içerik

  • Mantıklılık: ☆☆☆☆☆
  • flow yerleşimi içerik hizalama konusunda yardımcı değil. Bir satır içindeki dikey hizalamaya izin veriyor
  • O halde kapsayıcı yüksekliği kadar bir satır oluşturursak ne olur?
<div class="container">  
  ::before  
  <div class="content">Content.</div>  
</div>  
.container::before {  
  content: '';  
  height: 100%;  
  display: inline-block;  
  vertical-align: middle;  
}  
.content {  
  display: inline-block;  
  vertical-align: middle;  
}  
  • İşler kolayca tuhaflaşabiliyor

Yöntem 4: tek satırlı flexbox

  • Mantıklılık: ★★★☆☆
  • Flexbox, web’in başlamasından 20 yıl sonra yaygın olarak kullanılmaya başladı
  • Tek satır modunda (varsayılan), satır dikey alanı doldurur ve align-items ile satır içindeki öğeler hizalanır
<div style="display: flex; align-items: center;">  
  <div>Content.</div>  
</div>  
  • Ya da satırları dikey hale getirip öğeleri hizalamak için justify-content kullanabilirsiniz
<div style="display: flex; flex-flow: column; justify-content: center;">  
  <div>Content.</div>  
</div>  

Yöntem 5: çok satırlı flexbox

  • Mantıklılık: ★★★☆☆
  • Çok satırlı flexbox’ta satırlar align-content ile hizalanabiliyor
<div style="display: flex; flex-flow: row wrap; align-content: center;">  
  <div>Content.</div>  
</div>  

Yöntem 6: grid içeriği

  • Mantıklılık: ★★★★☆
  • grid daha sonra geldiği için hizalama biraz daha basitleşti
<div style="display: grid; align-content: center;">  
  <div>Content.</div>  
</div>  

Yöntem 7: grid hücresi

  • Mantıklılık: ★★★★☆
  • align-content hücreleri kapsayıcı içinde hizalar, align-items ise içeriği hücre içinde hizalar
<div style="display: grid; align-items: center;">  
  <div>Content.</div>  
</div>  

Yöntem 8: auto kenar boşluğu

  • Mantıklılık: ★★★☆☆
  • flow yerleşiminde margin:auto yatayda ortalar ama dikeyde ortalamaz
  • flexbox ve grid bu mantıksızlığı paylaşmıyor
<div style="display: grid;">  
  <div style="margin-block: auto;">  
    Content.  
  </div>  
</div>  

Yöntem 9: 2024’te bu yazı

  • Mantıklılık: ★★★★★
  • Tarayıcıların bunu en başta eklemiş olması gerekirdi
<div style="align-content: center;">  
  <code>align-content</code> just works!  
</div>  

29 yorum

 
tobesimple7 2024-10-17

Vay canına~ böyle bir özellik~~

 
seunggi 2024-09-12

Bilgisayar biliminin en zor şeyi - ortalama

https://tonsky.me/blog/centering/

 
mongsilsushi 2024-09-06

Nihayet!

 
sgwanlee 2024-09-04

CSS fazla kolaylaşmadı mı? hahaha

 
jwh926 2024-09-04

🙏🏻🙏🏻🙏🏻🙏🏻

 
rulerwithcss 2024-09-04

aman Tanrım, peynirli kenar

 
shpkc 2024-09-04

Sonunda !

 
halfenif 2024-09-04

Geç kaldılar! Geç kaldılar! Geç kaldılar!

 
uoayop 2024-09-03

Nihayet

 
aer0700 2024-09-03

Mutluyum

 
koyokr 2024-09-03

lol

 
nemorize 2024-09-03

a-men

 
carnoxen 2024-09-03

Mevcut web sitelerinin bu değişiklik nedeniyle yapısının bozulma riski var mı?

 
bluekai17 2024-09-10

Ben de bu kısmı merak ediyorum.

 
ng0301 2024-09-03

Nihayet!

 
yatmak 2024-09-03

Sonunda Web 3.0 çağı geldi.

 
plaaat0102 2024-09-03

Yorumlar tam bir neşe kaynağı hahahaha..

 
godppun 2024-09-03

Gerçekten sonunda...

 
kangkung9225 2024-09-03

Oo...? Yapmak mı gerekiyor haha..

 
[Bu yorum gizlendi.]
 
qurare 2024-09-03

Nihayet

 
savvykang 2024-09-03

VAY!!!

 
joyfui 2024-09-03

Vay be!!!

 
mkyoon 2024-09-03

Çok mutluyum!

 
wedding 2024-09-03

Ben daha çok uygulama geliştirme yaptığım için web geliştirmeye yardım ederken hiç düşünmeden aratıp çıkan flexbox'ı kullanıyor, bunun da ortalama olduğunu sanıyordum ama... Meğer bunca zamandır yokmuş, şok oldum.....

 
illiil1lii 2024-09-03

Vay be!

 
huiya 2024-09-03

Nihayet!

 
tjddnjsjo 2024-09-03

Harika!

 
pkj3186 2024-09-03

Nihayet!