CSS Grid mi Flexbox mı? Hangisini ne zaman kullanmalı
İkisi de modern tarayıcıların tamamında destekleniyor ve birbirinin rakibi değil. Kısa kural şu:
Flexbox tek boyutlu (bir satır ya da bir sütun), Grid iki boyutlu (satır ve sütun aynı anda) düzen içindir.
Flexbox ne zaman?
İçeriğin boyutu düzeni belirlesin istiyorsan: menü bağlantıları, buton grupları, bir kartın içindeki ikon + metin hizalaması.
.navbar {
display: flex;
align-items: center;
gap: 1rem;
}
.navbar .spacer { margin-left: auto; } /* sağa yasla */
Klasik "dikey ve yatay ortalama" da Flexbox'la iki satır:
.center {
display: flex;
justify-content: center;
align-items: center;
}
Grid ne zaman?
Düzeni önce sen belirlemek istiyorsan: sayfa iskeleti, kart ızgaraları, form düzenleri.
.cards {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
gap: 1.5rem;
}
Bu tek kural, media query yazmadan ekran genişliğine göre sütun sayısını kendisi ayarlar.
Sayfa iskeleti için grid-template-areas çok okunaklıdır:
.layout {
display: grid;
grid-template-columns: 240px 1fr;
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
}
@media (max-width: 768px) {
.layout {
grid-template-columns: 1fr;
grid-template-areas: "header" "main" "sidebar" "footer";
}
}
Birlikte kullanmak
En yaygın desen: dış iskelet Grid, iç bileşenler Flexbox. Örneğin kart ızgarası Grid ile, her kartın içindeki başlık–etiket–buton hizası Flexbox ile.
Sık yapılan hatalar
- Ögeler arası boşluk için hâlâ
marginhesaplamak: ikisinde degapvar. - Flex ögelerinin taşması: uzun metinli öğeye
min-width: 0ver. - Grid'de sabit
pxsütunlar:fr,minmax()veauto-fill/auto-fitesnekliğini kullan.
Aklınızda kalan zor bir düzen varsa paylaşın, birlikte Grid ya da Flex çözümünü çıkaralım.