Web geliştirme sürecinde en sık karşılaşılan problemlerden biri, sayfadaki içeriklerin düzenli ve uyumlu bir şekilde yerleştirilmesidir. Bir web sitesinde menü çubuğunun düzgün hizalanması, kartların belirli bir düzene göre sıralanması veya bir giriş formundaki alanların orantılı şekilde yerleştirilmesi gibi durumlarla karşılaşabiliriz. İşte tam da burada CSS Flexbox devreye giriyor.

Flexbox, web sayfalarındaki öğeleri bir konteyner (kap) içerisinde esnek bir şekilde hizalamamızı ve aralarındaki alanları dinamik olarak ayarlamamızı sağlayan modern bir CSS düzenleme modelidir. Bu yazıda, Flexbox’un ne olduğunu, nasıl çalıştığını ve neden kullanıldığını yeni başlayanlar için adım adım açıklayacağız.
Flexbox Nedir ve Neden Önemlidir?
Flexbox, yani Flexible Box Layout, esnek kutu yerleşimi anlamına gelir. Sayfadaki içeriklerin ekran boyutuna göre otomatik olarak uyum sağlamasına yardımcı olur. Eski yöntemlerle öğeleri düzenlerken genellikle float, inline-block, table-layout gibi teknikler kullanılırdı. Ancak bu yöntemler karmaşık yapılar oluşturabiliyor ve responsive (duyarlı) tasarımlar yapmak zorlaşıyordu.
Flexbox ile artık sayfadaki öğeleri hizalamak ve düzenlemek çok daha kolay hale geldi. Özellikle mobil uyumlu tasarımlar oluştururken büyük avantaj sağlar. Örneğin, bir menü çubuğundaki düğmelerin belirli kurallara göre hizalanmasını, bir ürün listesinin farklı ekran boyutlarına göre sıralanmasını veya bir form içindeki giriş alanlarının dengeli bir şekilde dağıtılmasını Flexbox sayesinde pratik bir şekilde gerçekleştirebiliriz.
Flexbox’ın Temel Mantığı
Flexbox, bir kapsayıcı (container) içinde bulunan öğelerin (items) nasıl hizalanacağını ve boş alanın nasıl dağıtılacağını belirler.

Burada önemli olan iki temel bileşen vardır:
- Flex Container (Esnek Kapsayıcı): İçine yerleştirilen öğeleri yöneten ana kapsayıcıdır. Flexbox kullanabilmek için bu kapsayıcının
display: flex;
özelliği alması gerekir.
- Flex Items (Esnek Öğeler): Kapsayıcının içinde bulunan ve düzenleme yapılan öğelerdir. Bu öğeler, kapsayıcının belirlediği kurallara göre hizalanır ve ölçeklenir.
Örnek olarak, aşağıdaki gibi bir menü çubuğu düşünelim:
<nav class="menu">
<a href="#">Ana Sayfa</a>
<a href="#">Hakkında</a>
<a href="#">Hizmetler</a>
<a href="#">İletişim</a>
</nav>
Bunu Flexbox ile düzenlemek için aşağıdaki CSS kodlarını kullanabiliriz:
.menu {
display: flex;
justify-content: space-between;
align-items: center;
}
Bu kodlar sayesinde menü öğeleri eşit olarak yayılacak ve her biri arasında esnek bir boşluk oluşacaktır.
Flexbox’ın Ana Özellikleri
1. justify-content
: Yatay Hizalama
flex-start
: Öğeleri sola hizalar (varsayılan).
flex-end
: Öğeleri sağa hizalar.
center
: Öğeleri ortalar.
space-between
: İlk ve son öğeyi kenarlara yaslar, geri kalan boşluğu öğeler arasında eşit olarak dağıtır.
space-around
: Öğelerin her iki yanında eşit boşluk bırakır.
space-evenly
: Öğeleri aralarında tamamen eşit boşluklarla hizalar.
2. align-items
: Dikey Hizalama
stretch
: Öğeleri konteynerin yüksekliğini kaplayacak şekilde genişletir (varsayılan).
flex-start
: Öğeleri üst tarafa hizalar.
flex-end
: Öğeleri alt tarafa hizalar.
center
: Öğeleri dikeyde ortalar.
baseline
: Öğeleri metin taban çizgisine göre hizalar.
3. align-self
: Öğeleri Bireysel Olarak Hizalama
align-self: flex-start;
→ Sadece o öğeyi üst hizaya alır.
align-self: center;
→ Sadece o öğeyi ortalar.
4. align-content
: Çok Satırlı İçeriklerin Hizalanması
flex-start
: Satırları yukarı hizalar.
flex-end
: Satırları aşağı hizalar.
center
: Satırları ortalar.
space-between
: Satırlar arasında maksimum boşluk bırakır.
space-around
: Satırların çevresine eşit boşluk bırakır.
stretch
: Satırları kapsayıcıya yayar.
5. flex-direction
: Yön Belirleme
row
: Öğeleri yatayda sıralar (varsayılan).
row-reverse
: Öğeleri yatayda tersten sıralar.
column
: Öğeleri dikeyde sıralar.
column-reverse
: Öğeleri dikeyde tersten sıralar.
6. flex-wrap
: Öğelerin Taşmasını Önleme
nowrap
: Öğeler tek satıra sığdırılmaya çalışılır (varsayılan).
wrap
: Öğeler sığmazsa alt satıra geçer.
wrap-reverse
: Öğeler sığmazsa alt satıra geçer, ancak ters yönde.
7. flex-basis
, flex-grow
, flex-shrink
: Öğelerin Boyutlandırılması
flex-basis
: Öğenin başlangıç boyutunu belirler.
flex-grow
: Öğenin esneme oranını belirler.
flex-shrink
: Öğenin daralma oranını belirler.
8. gap
: Öğeler Arasındaki Boşlukları Ayarlama
gap: 10px;
→ Öğeler arasına 10px boşluk bırakır.
row-gap: 20px;
→ Sadece satırlar arasına boşluk bırakır.
column-gap: 15px;
→ Sadece sütunlar arasına boşluk bırakır.
9. order
: Öğelerin Sırasını Değiştirme
.item1 { order: 2; }
.item2 { order: 1; }
Sonuç
Flexbox, modern web tasarımında içerikleri esnek, uyumlu ve düzenli bir şekilde hizalamanın en pratik yollarından biridir. Yatay veya dikey hizalama, öğelerin arasındaki boşluğu kontrol etme ve duyarlı (responsive) tasarımlar oluşturma konusunda büyük kolaylık sağlar.
Flexbox’ı öğrenmek için küçük projeler yaparak pratik yapabilirsiniz. Basit bir menü çubuğu, kart dizilimi veya giriş formu tasarlayarak bu güçlü CSS özelliğini deneyimleyebilirsiniz. Öğrendiklerinizi uygulayarak harika tasarımlar yapabilirsiniz!