
İçindekiler
CSS Grid Layout, web tasarımında devrim yaratan ve geliştiricilere sayfalarını iki boyutlu bir düzende organize etme imkânı sunan güçlü bir CSS özelliğidir. Bu makalede, Grid’in temellerinden ileri düzey kullanımına kadar kapsamlı bir inceleme yapacağız.
CSS Grid Nedir?
CSS Grid, web sayfalarını satır ve sütunlar halinde düzenlemeyi sağlayan iki boyutlu bir yerleşim modelidir. Flexbox’un tek boyutlu (sadece satır veya sütun) düzenleme yeteneğinin aksine, Grid Layout hem satır hem de sütunları aynı anda kontrol etmenize olanak tanır. Bu sayede, daha karmaşık ve esnek tasarımlar oluşturmak mümkün hale gelir.
CSS Grid’in Avantajları
- Esneklik: Grid sistemi, öğelerin boyutlarını ve konumlarını kolayca ayarlamanıza imkân tanır.
- Daha Az Kod: Karmaşık düzenleri oluştururken daha az CSS kodu yazmanızı sağlar.
- Tarayıcı Desteği: Modern tarayıcıların çoğu Grid’i desteklemektedir, bu da geniş bir kullanıcı kitlesine ulaşmanızı sağlar.
CSS Grid’in Temel Kavramları
Grid Container (Izgara Kabı)
Bir öğeyi display: grid;
veya display: inline-grid;
olarak tanımladığınızda, o öğe bir grid container (ızgara kabı) olur. Bu kabın içindeki tüm doğrudan çocuk öğeler ise grid item (ızgara öğesi) olarak adlandırılır.
.container {
display: grid;
}
Grid Item (Izgara Öğesi)
Grid container’ın içindeki her bir doğrudan çocuk öğe bir grid item’dır. Bu öğeler, grid container tarafından tanımlanan ızgara yapısına göre yerleştirilir.
<div class="container">
<div class="item1">Öğe 1</div>
<div class="item2">Öğe 2</div>
<div class="item3">Öğe 3</div>
</div>
Satır ve Sütunların Tanımlanması
Grid container içinde satır ve sütunları tanımlamak için grid-template-rows
ve grid-template-columns
özellikleri kullanılır.
.container {
display: grid;
grid-template-columns: 200px 200px;
grid-template-rows: 100px 100px;
}
Yukarıdaki örnekte, iki sütun ve iki satırdan oluşan bir ızgara tanımlanmıştır. Her sütun 200 piksel genişliğinde, her satır ise 100 piksel yüksekliğindedir.
Izgara Boşlukları (Grid Gaps)
Satır ve sütunlar arasındaki boşlukları ayarlamak için grid-gap
, grid-row-gap
ve grid-column-gap
özellikleri kullanılır.
.container {
display: grid;
grid-template-columns: 200px 200px;
grid-template-rows: 100px 100px;
grid-gap: 10px;
}
Bu örnekte, tüm satır ve sütunlar arasında 10 piksellik bir boşluk eklenmiştir.
Grid Öğelerinin Yerleşimi
Grid öğelerinin ızgara içinde nasıl yerleşeceğini kontrol etmek için çeşitli özellikler bulunmaktadır.
grid-column
ve grid-row
Bir öğenin hangi satır ve sütunlarda yer alacağını belirlemek için grid-column
ve grid-row
özellikleri kullanılır.
.item1 {
grid-column: 1 / 3; /* 1. sütundan başlayıp 3. sütuna kadar uzanır */
grid-row: 1 / 2; /* 1. satırda yer alır */
}
Yukarıdaki kod, item1
öğesinin birinci satırda ve birinci sütundan başlayarak üçüncü sütuna kadar (yani iki sütun genişliğinde) yer almasını sağlar.
grid-area
grid-area
özelliği, bir öğenin ızgara içinde kaplayacağı alanı tek bir satırda tanımlamanıza olanak tanır.
.item2 {
grid-area: 2 / 1 / 3 / 3; /* satır başlangıcı / sütun başlangıcı / satır bitişi / sütun bitişi */
}
Bu örnekte, item2
öğesi ikinci satırın başından üçüncü satırın başına kadar ve birinci sütunun başından üçüncü sütunun başına kadar olan alanı kaplar.
Otomatik Yerleşim ve Esneklik
CSS Grid, öğelerin otomatik olarak yerleşmesini ve esnek boyutlandırılmasını destekler.
auto-fill
ve auto-fit
repeat
fonksiyonu ile birlikte auto-fill
ve auto-fit
anahtar kelimeleri, ızgara öğelerinin container’a sığacak şekilde otomatik yerleşimini sağlar.
.container {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
}
Bu yapı, container genişliğine bağlı olarak mümkün olduğunca çok sayıda 100 piksel genişliğinde sütun oluşturur.
fr
Birimi
fr
birimi, mevcut alanın bir bölümünü temsil eder ve esnek düzenler oluşturmak için kullanılır.
.container {
display: grid;
grid-template-columns: 1fr 2fr;
}
Bu örnekte, ikinci sütun birincinin iki katı genişliğinde olacaktır.
Medya Sorguları ve Responsive Tasarım
CSS responsive (duyarlı) tasarım için oldukça esnek bir yapı sunar. CSS Grid kullanarak farklı ekran boyutlarına uyum sağlayan düzenler oluşturabilirsiniz.
Örnek: Mobil Uyumlu Izgara Düzeni
Aşağıdaki örnek, geniş ekranlarda üç sütunlu bir düzen oluştururken, küçük ekranlarda tek sütuna düşen bir yapı oluşturur:
.container {
display: grid;
grid-template-columns: repeat(3, 1fr);
gap: 10px;
}
@media (max-width: 768px) {
.container {
grid-template-columns: 1fr;
}
}
Bu yapı sayesinde, ekran genişliği 768 pikselin altına düştüğünde sütun sayısı otomatik olarak bire iner.
İleri Düzey CSS Grid Teknikleri
1. grid-template-areas
ile Daha Kolay Yerleşim
grid-template-areas
özelliği, sayfa düzenini daha okunaklı hale getirir. Örneğin:
.container {
display: grid;
grid-template-areas:
"header header"
"sidebar content"
"footer footer";
grid-template-columns: 200px 1fr;
grid-template-rows: auto;
}
.header {
grid-area: header;
}
.sidebar {
grid-area: sidebar;
}
.content {
grid-area: content;
}
.footer {
grid-area: footer;
}
Bu yöntemle HTML içeriğini CSS üzerinden daha düzenli bir şekilde konumlandırabilirsiniz.
2. subgrid
Kullanımı
CSS Grid’in en yeni özelliklerinden biri olan subgrid
, iç içe geçmiş ızgaraların ana grid yapısına bağımlı olmasını sağlar.
.parent {
display: grid;
grid-template-columns: 1fr 2fr;
}
.child {
display: grid;
grid-template-columns: subgrid;
}
Bu özellik henüz tüm tarayıcılarda desteklenmese de, özellikle kompleks yerleşimlerde büyük avantajlar sağlar.
Sonuç
CSS Grid Layout, modern web tasarımında esneklik, hız ve kod sadeliği sağlayan güçlü bir sistemdir. Esnek sütunlar, satırlar, otomatik yerleşim, medya sorguları ve ileri seviye tekniklerle CSS Grid kullanımı, duyarlı ve estetik web siteleri oluşturmanın en iyi yollarından biridir. Bu rehberde temel ve ileri düzey CSS Grid konularına değindik. Artık projelerinizde CSS Grid’i kullanarak daha modern ve düzenli tasarımlar oluşturabilirsiniz.
Kaynaklar:
Ayrıca “CSS” ve “HTML” kategorilerini bakmayı unutma.
-
CSS Grid ile Flexbox arasındaki fark nedir?
CSS Grid, iki boyutlu (satır ve sütun) yerleşim sağlarken, Flexbox yalnızca tek bir eksende (satır veya sütun) düzenleme yapar. CSS Grid daha kompleks düzenler için kullanılırken, Flexbox içeriklerin sıralı akış içinde hizalanması için daha uygundur.
-
CSS Grid tarayıcılar tarafından destekleniyor mu?
Evet, CSS Grid modern tarayıcıların (Chrome, Firefox, Edge, Safari, Opera) tamamında desteklenmektedir. Ancak eski tarayıcılar (örneğin, Internet Explorer) kısmi veya hiç destek sunmayabilir.
-
CSS Grid mobil uyumlu tasarımlar için uygun mu?
Evet! CSS Grid,
auto-fit
,auto-fill
,fr
birimi ve medya sorgularıyla birleştiğinde duyarlı (responsive) tasarımlar oluşturmak için mükemmeldir. -
fr
birimi nedir ve nasıl kullanılır?fr
, mevcut alanın bir bölümünü ifade eden bir CSS Grid birimidir..container { display: grid; grid-template-columns: 1fr 2fr; }
Bu durumda, ikinci sütun birincinin iki katı genişliğinde olur. -
Grid öğeleri arasındaki boşluk nasıl ayarlanır?
gap
,row-gap
vecolumn-gap
özellikleri kullanılarak satır ve sütunlar arasındaki boşluklar ayarlanabilir..container { display: grid; grid-gap: 10px; /* Tüm boşlukları 10px yapar */ }
-
CSS Grid ile iç içe geçmiş grid (nested grid) kullanabilir miyim?
Evet, iç içe grid sistemleri oluşturabilirsiniz. Ancak
subgrid
özelliği kullanıldığında, alt grid üst grid’in hizalama kurallarına bağlı olur. -
grid-template-areas
özelliği ne işe yarar?Bu özellik, sayfanın düzenini kelimelerle tanımlayarak daha anlaşılır hale getirir.
.container { display: grid; grid-template-areas: "header header" "sidebar content" "footer footer"; }
Bu sayede HTML öğelerini CSS üzerinden düzenlemek daha kolay hale gelir.
Henüz yorum yapılmamış. İlk yorumu siz yapabilirsiniz!