İçeriğe geç

CSS · 5/8

Flexbox ile yan yana dizmek

Flexbox ile bir satırın hizasını ve dar ekranda sarılmasını yönetmek.

Önerilen çalışma: 25–45 dakika; örnekleri kendin uygula. Süre kişiye göre değişir.

Bu sayfada · 9 başlık

Başlamadan önce

Önceki dersteki örneği çalıştırmış olman ve dosya/çıktı ayrımını biliyor olman yararlı.

Öğrenme sırası: konuyu oku → çıktıyı tahmin et → örneği değiştir → alıştırmayı çöz → cevabını gerekçelendir.

CSS · Flexbox ile yan yana dizmek — videolu atölye: açıklamalı kavram şeması
Webino App öğretici şeması · Uygulama ekran görüntüsü değildir.

Videoyla adım adım izle

Türkçe açıklamalı sessiz görsel anlatım. Sesli ders veya kesintisiz ekran kaydı değildir. Duraklatıp kendi ortamında uygula.

Video bölümleri ve tam metin

Flexbox ile yan yana dizmek

Flexbox ile bir satırın hizasını ve dar ekranda sarılmasını yönetmek.

Kavramı kur

Flexbox, bir kapsayıcının doğrudan çocuklarını tek ana eksen üzerinde düzenler. display:flex verdiğin öğe kapsayıcıdır; onun çocukları flex öğeleri olur. Ana eksen varsayılan olarak yataydır. justify-content ana eksen boyunca dağılımı, align-items ona dik eksende hizalamayı kontrol eder.

Neden böyle çalışıyor?

Birden çok kartı yan yana dizdiğinde toplam genişlik dar ekrana sığmayabilir. flex-wrap:wrap yeni satıra geçmeye izin verir; gap öğeler arasındaki düzenli boşluğu oluşturur. Her öğeye ayrı margin yazmak yerine kapsayıcıda gap kullanmak ilk ve son öğe boşluklarını daha anlaşılır yönetir.

Çalışma sırası

Bir satırda uzun metin olması, beklemediğin minimum genişlikler doğurabilir. Flex öğelerinde min-width:0 veya uzun kelimeler için uygun kırılma kuralı gerekebilir. Önce hangi öğenin genişlediğini ölç; sonra sadece o öğeyi düzelt. Her kutuya rastgele width vermek esnek yerleşimin amacını bozar.

İkinci örnek · 1

display:flex yalnızca doğrudan çocukların yerleşimini düzenler. Kodun tamamı yazılı derste bulunur.

Kod

<style>
.satir { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.kart { flex:1 1 160px; min-width:0; padding:16px; background:#eef2ff; }
</style>
<div class="satir"><div class="kart">HTML</div><div class="kart">CSS</div><div class="kart">JavaScript</div></div>

Beklenen sonucu oku

align-items:center farklı yükseklikte öğeleri çapraz eksende ortalar.

Beklenen çıktı: Geniş ekranda yan yana, dar ekranda saran üç kart.

Bir değeri sen değiştir

Üç kartı yan yana diz ve aralarına gap ekle. Bir kartın metnini uzat; align-items değerlerini karşılaştır.

Hata nereden gelir?

flex kuralını kapsayıcı yerine çocuklara veya tersine koymak beklenen etkiyi vermez; görevleri ayır.

Kendi çözümünü kur

Ekranı daralt; flex-wrap kapalıyken ve açıkken farkı gözlemle. flex:1 1 160px esneme, küçülme ve başlangıç boyutunu tek kuralda belirtir.

Çözüm varyasyonu · 1

Önce kendi denemeni yap; sonra bu varyasyonun girdileri ile sonucunu karşılaştır.

Kod

<style>.grup{display:flex;flex-wrap:wrap;gap:10px}.oge{flex:1 1 140px;min-width:0;padding:14px;background:#e0f2fe}</style>
<div class="grup"><div class="oge">Bir</div><div class="oge">İki</div></div>

Kendini kontrol et

justify-content varsayılan yatay flex düzeninde hangi ekseni yönetir? Yanıt: Ana ekseni, yani varsayılan düzende yatay dağılımı yönetir.

Beklenen çıktı: İki esnek öğe; alan azaldığında yeni satıra geçebilir.

Konu anlatımı

Flexbox, bir kapsayıcının doğrudan çocuklarını tek ana eksen üzerinde düzenler. display:flex verdiğin öğe kapsayıcıdır; onun çocukları flex öğeleri olur. Ana eksen varsayılan olarak yataydır. justify-content ana eksen boyunca dağılımı, align-items ona dik eksende hizalamayı kontrol eder.

Birden çok kartı yan yana dizdiğinde toplam genişlik dar ekrana sığmayabilir. flex-wrap:wrap yeni satıra geçmeye izin verir; gap öğeler arasındaki düzenli boşluğu oluşturur. Her öğeye ayrı margin yazmak yerine kapsayıcıda gap kullanmak ilk ve son öğe boşluklarını daha anlaşılır yönetir.

Bir satırda uzun metin olması, beklemediğin minimum genişlikler doğurabilir. Flex öğelerinde min-width:0 veya uzun kelimeler için uygun kırılma kuralı gerekebilir. Önce hangi öğenin genişlediğini ölç; sonra sadece o öğeyi düzelt. Her kutuya rastgele width vermek esnek yerleşimin amacını bozar.

İlk örneği oku ve dene

5

Flexbox ile yan yana dizmek

display: flex içindeki öğeleri yan yana dizer. gap aralarındaki boşluğu, justify-content: center ortalamayı sağlar. border-radius köşeleri yuvarlar.

CSS
<style>
  .menu {
    display: flex;
    gap: 12px;
    justify-content: center;
  }
  .menu a {
    background-color: #6366f1;
    color: white;
    padding: 8px 16px;
    border-radius: 999px;
    text-decoration: none;
  }
</style>

<nav class="menu">
  <a href="#">Ana Sayfa</a>
  <a href="#">Diller</a>
  <a href="#">Araçlar</a>
</nav>

▶ Sonuç

Ortada yan yana duran, yuvarlak köşeli üç mor menü butonu görünür.

Adım adım neden böyle çalışıyor?

  1. display:flex yalnızca doğrudan çocukların yerleşimini düzenler.
  2. gap çocuklar arasındaki boşluktur; dış kenar boşluğu değildir.
  3. flex-wrap satır yetmediğinde öğeleri aşağı taşır.
  4. align-items:center farklı yükseklikte öğeleri çapraz eksende ortalar.
105

İkinci çözümlü örnek

Flexbox ile bir satırın hizasını ve dar ekranda sarılmasını yönetmek.

CSS
<style>
.satir { display:flex; flex-wrap:wrap; gap:12px; align-items:center; }
.kart { flex:1 1 160px; min-width:0; padding:16px; background:#eef2ff; }
</style>
<div class="satir"><div class="kart">HTML</div><div class="kart">CSS</div><div class="kart">JavaScript</div></div>

▶ Sonuç

Geniş ekranda yan yana, dar ekranda saran üç kart.

Kolaydan zora sen dene

  1. Üç kartı yan yana diz ve aralarına gap ekle.
  2. Bir kartın metnini uzat; align-items değerlerini karşılaştır.
  3. Ekranı daralt; flex-wrap kapalıyken ve açıkken farkı gözlemle.
İpucunu aç

flex:1 1 160px esneme, küçülme ve başlangıç boyutunu tek kuralda belirtir.

Üç görevin açıklamalı çözümünü oku
  1. Kapsayıcıda display:flex ve gap; çocuklarda uygun esneme kur.
  2. align-items çapraz ekseni değiştirir; uzun metin için min-width:0 gerekebilir.
  3. wrap açıkken öğeler yeni satıra geçebilir; kapalıyken küçülme veya taşma sorununu ölç.
Bir çözüm varyasyonu gör
205

Çözüm varyasyonu

Önce kendi görevlerini dene. Bu varyasyonda girdi ve sonuçları karşılaştır.

CSS
<style>.grup{display:flex;flex-wrap:wrap;gap:10px}.oge{flex:1 1 140px;min-width:0;padding:14px;background:#e0f2fe}</style>
<div class="grup"><div class="oge">Bir</div><div class="oge">İki</div></div>

▶ Sonuç

İki esnek öğe; alan azaldığında yeni satıra geçebilir.

Yaygın hata ve çözümü

  1. flex kuralını kapsayıcı yerine çocuklara veya tersine koymak beklenen etkiyi vermez; görevleri ayır.
  2. Sabit genişlikleri padding ile toplarken box-sizing kuralını unutma.

Kendini değerlendir

Flexbox nasıl etkinleştirilir?

Ezberlemeden açıklayabiliyor musun?

justify-content varsayılan yatay flex düzeninde hangi ekseni yönetir?

Açıklamalı yanıt

Ana ekseni, yani varsayılan düzende yatay dağılımı yönetir.

Kendi çözümünde bir girdiyi değiştir. Çalıştırmadan önce beklenen sonucu yaz; gerçek sonuçla karşılaştır ve fark varsa hangi satırdan kaynaklandığını açıkla.

Kaynak ve çalışma ortamı

Örnekler küçük öğretim senaryolarıdır. Java/C#/PHP/Swift çalışma ortamını kendi cihazında ayrıca doğrula; yazılı sonuçlar beklenen davranışı açıklar.

Resmî dil belgeleri
Bu içerik işine yaradı mı?

Görüşünü aşağıdan işaretleyebilir ve varsa notunu bırakabilirsin.