Foruma hoş geldin 👋, Ziyaretçi

Forum içeriğine ve tüm hizmetlerimize erişim sağlamak için foruma kayıt olmalı ya da giriş yapmalısınız. Foruma üye olmak tamamen ücretsizdir.

CSS Grid'de auto-placement algoritmasını grid-auto-flow: dense ile nasıl daha verimli hale getirdiğim ve boşlukları kapattığım

webnix

Üye
Katılım
14 Mart 2026
Mesajlar
23
Merhaba arkadaşlar, bugün başımı çok ağrıtan bir sorunu ve onun en temiz çözümünü anlatacağım. Bir projede, farklı boyutlarda kartlarım vardı ve bunları CSS Grid ile otomatik yerleştiriyordum. Ancak bir süre sonra fark ettim ki, grid'de rahatsız edici boşluklar oluşuyordu. Büyük bir öğe, kendinden sonra gelen daha küçük öğelerin o boşluğa sığmasına izin vermiyor, onları bir sonraki satıra itiyordu. İlk gördüğümde "Bu da ne böyle?" demiştim. İşte o sorun ve çözümü.

🔥 Sorunun Can Alıcı Noktası

Normalde `grid-auto-flow: row` (varsayılan) kullandığınızda, Grid algoritması öğeleri satır satır, soldan sağa yerleştirir. Eğer bir öğe belirlediğiniz `grid-column` veya `grid-row` span'i nedeniyle yer kaplarsa, algoritma bir sonraki boş hücreye atlar. Bu da, öncesinde uygun boşluk olsa bile, küçük öğelerin oralara yerleşememesi anlamına gelir. Ortaya şöyle bir manzara çıkıyor:

CSS:
.kart-container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 1rem;
  / grid-auto-flow: row; Varsayılan /
}

💡 Kurtarıcı: grid-auto-flow: dense

Çözüm, `grid-auto-flow` özelliğinin `dense` değerinde saklı. Bu değeri eklediğinizde, Grid algoritmasına "Yoğun yerleştir" talimatı vermiş oluyorsunuz. Algoritma, ilerideki öğeleri yerleştirirken, geriye dönük olarak daha önce atlanmış boşlukları doldurmaya çalışıyor. Yani "packing" yapıyor. Kullanımı basit:

CSS:
.kart-container {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
  gap: 1rem;
  grid-auto-flow: dense; / Sihir burada! /
}

Bu tek satırlık değişiklikle, küçük kartlarım artık öndeki büyük kartın bıraktığı boşluğu dolduruyor ve layout çok daha sıkı, verimli görünüyor.

⚠️ Dikkat Edilmesi Gerekenler ve Sıralama

Burada önemli bir uyarı var: `dense` algoritması, görsel sırayı korumak yerine boşlukları doldurmayı önceliklendirir. Bu, DOM'daki sıralama ile görsel sıralamanın farklı olabileceği anlamına gelir. Erişilebilirlik ve mantıksal akış için kritik öneme sahip listelerde (bir makale listesi gibi) dikkatli kullanmak gerekir. Ancak, bir resim galerisi veya ürün grid'i gibi sıralamanın mutlak olmadığı yerlerde harikalar yaratır.

Eğer bazı öğelerin boyutunu özel olarak belirlemeniz gerekiyorsa, `grid-column` ve `grid-row` ile `span` kullanımı `dense` ile mükemmel çalışır.

HTML:
<div class="kart-container">
  <div class="kart buyuk-kart" style="grid-column: span 2; grid-row: span 2;">Büyük Kart</div>
  <div class="kart">Küçük Kart 1</div>
  <div class="kart">Küçük Kart 2</div>
  <div class="kart" style="grid-column: span 2;">Geniş Kart</div>
  <!-- Diğer kartlar -->
</div>

🎯 Sonuç ve Düşünceler

`grid-auto-flow: dense` benim için CSS Grid'in gizli hazinelerinden biri oldu. Layout'u daha kontrol edilebilir ve estetik hale getirdi. Özellikle dinamik içerik yüklenen ve öğe boyutlarının değişken olduğu projelerde can simidi gibi.

Peki ya siz? CSS Grid'de auto-placement ile benzer sorunlar yaşadınız mı? `dense` dışında bu tür boşlukları doldurmak için farklı bir yöntem, hack veya kütüphane kullanan var mı aranızda? Yorumlarda deneyimlerinizi paylaşın, tartışalım!
 

Tema özelleştirme sistemi

Bu menüden forum temasının bazı alanlarını kendinize özel olarak düzenleye bilirsiniz.

Zevkine göre renk kombinasyonunu belirle

Tam ekran yada dar ekran

Temanızın gövde büyüklüğünü sevkiniz, ihtiyacınıza göre dar yada geniş olarak kulana bilirsiniz.

Geri