Ana Sayfa/Blog/CSS Grid Layout: Modern Sayfa Düzeni Oluşturma

CSS Grid Layout: Modern Sayfa Düzeni Oluşturma

CSS Grid Layout, web sayfalarında iki boyutlu düzenler oluşturmak için tasarlanmış en güçlü CSS modülüdür. Hem satır hem de sütun kontrolünü aynı anda sağlayarak, karmaşık sayfa yapılarını minimum kodla oluşturmanıza olanak tanır. Flexbox tek boyutlu düzenler için idealken, Grid iki boyutlu düzenlerin tartışmasız kralıdır.

Grid Temelleri

Grid sistemi, bir container ve onun içindeki item'lardan oluşur:

.grid-container {
  display: grid;
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  gap: 20px;
}

Bu kod, üç sütunlu bir düzen oluşturur: sol ve sağ kenar çubukları sabit 200px genişliğinde, ortadaki içerik alanı kalan boşluğu doldurur.

grid-template-columns ve grid-template-rows

Bu iki özellik, grid yapısının iskeletini tanımlar:

/* Sabit boyutlu sütunlar */
grid-template-columns: 100px 200px 100px;

/* Esnek sütunlar (fr birimi) */
grid-template-columns: 1fr 2fr 1fr;

/* Karışık kullanım */
grid-template-columns: 250px 1fr;

/* Tekrarlı sütunlar */
grid-template-columns: repeat(3, 1fr);

/* Otomatik boyutlu satırlar */
grid-template-rows: auto 1fr auto;

fr Birimi Nedir?

fr (fraction — kesir) birimi, kullanılabilir alanın bir payını temsil eder. Grid'e özgü bu birim, esnek düzenler oluşturmanın en temiz yoludur:

/* Üç eşit sütun */
grid-template-columns: 1fr 1fr 1fr;

/* Ortadaki sütun iki kat geniş */
grid-template-columns: 1fr 2fr 1fr;

/* Sabit kenar + esnek orta */
grid-template-columns: 300px 1fr;

fr birimi, yüzde kullanımından farklı olarak gap değerini otomatik hesaba katar. Yani gap: 20px tanımladığınızda fr birimleri kalan alana göre hesaplanır.

gap: Izgara Boşlukları

Grid elemanları arasındaki boşluğu gap ile tanımlarsınız:

.grid-container {
  gap: 20px;           /* Satır ve sütun arası eşit */
  row-gap: 20px;       /* Sadece satır arası */
  column-gap: 30px;    /* Sadece sütun arası */
  gap: 20px 30px;      /* Satır: 20px, sütun: 30px */
}

Grid Areas: İsimli Alanlar

Grid'in en güçlü özelliklerinden biri, alanları isimlendirerek görsel bir harita oluşturabilmenizdir:

.layout {
  display: grid;
  grid-template-columns: 200px 1fr;
  grid-template-rows: 60px 1fr 50px;
  grid-template-areas:
    "header  header"
    "sidebar content"
    "footer  footer";
  gap: 10px;
}

.header  { grid-area: header; }
.sidebar { grid-area: sidebar; }
.content { grid-area: content; }
.footer  { grid-area: footer; }

Bu yaklaşım, sayfa düzenini CSS'te adeta çizerek oluşturmanızı sağlar. Responsive tasarımda media query ile grid-template-areas değerini değiştirmek yeterlidir.

auto-fit ve auto-fill ile Responsive Grid

Media query yazmadan responsive grid oluşturmanın en etkili yolu auto-fit ve auto-fill kullanmaktır:

/* Elemanlar en az 250px, kalan alanı eşit paylaşır */
.responsive-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
  gap: 20px;
}

İkisi arasındaki fark:

Çoğu durumda auto-fit tercih edilir çünkü elemanlar mevcut alanı tam olarak kullanır.

Grid Item Yerleştirme

Her grid item'ın konumunu ve kapladığı alanı belirleyebilirsiniz:

.item {
  grid-column: 1 / 3;    /* 1. sütun çizgisinden 3.'ye kadar */
  grid-row: 1 / 2;       /* 1. satır çizgisinden 2.'ye kadar */
}

/* Kısayol: span kullanımı */
.wide-item {
  grid-column: span 2;   /* 2 sütun kapla */
}

.tall-item {
  grid-row: span 3;      /* 3 satır kapla */
}

Pratik Örnek: Holy Grail Layout

Web tasarımının klasik "Holy Grail" düzenini Grid ile oluşturmak çok kolaydır:

.holy-grail {
  display: grid;
  grid-template: auto 1fr auto / 200px 1fr 200px;
  grid-template-areas:
    "header header  header"
    "nav    content aside"
    "footer footer  footer";
  min-height: 100vh;
  gap: 16px;
}

/* Mobil düzen */
@media (max-width: 768px) {
  .holy-grail {
    grid-template-columns: 1fr;
    grid-template-areas:
      "header"
      "nav"
      "content"
      "aside"
      "footer";
  }
}

Grid Ne Zaman Kullanılmalı?

Tek boyutlu düzenler (bir satır navigasyon, bir sütun liste) için Flexbox daha pratiktir. En iyi sonuç, Grid ve Flexbox'ı birlikte kullanmakla elde edilir.

Grid düzenlerinizi görsel olarak test etmek mi istiyorsunuz? SiteScripti'nin Flexbox & Grid Playground aracıyla Grid özelliklerini interaktif olarak deneyebilir, kodunuzu anında görebilirsiniz.

Bu konuyla ilgili araçlarımızı da deneyin: Flexbox & Grid Oluşturucu, CSS Animasyon Oluşturucu, Border Radius Oluşturucu

← Tüm Yazılar