Grid-Template-Areas ile Layout Oluşturmak

Ömer Gülçiçek
Kodcular
Published in
2 min readSep 9, 2022

--

CSS Grid ile layout’u oluşturmak çok kolay ve fonksiyonel. Bu makalede grid özelliklerinden olan grid-template-areas özelliği ile HTML bileşenlerimizi nasıl component gibi kullanabiliriz, bunu göreceğiz.

Layout’umuzu Parçalara Bölmek

Uzun bir süre Bootstrap’ten gelen bir alışkanlık olarak layout’u kolonlar ile bölerdik. Örneğin, 3 eşit parça için 3 x .col-4 yapısını kullanırdık. Flex ve grid ile gelen özelliklerden sonra artık Bootstrap’in grid yapısına ihtiyaç kalmadığını düşünüyorum.

Adım adım grid ile layout’u bölümlendirmeyi ve HTML bileşenlerimizi nasıl componentmiş gibi yönetebileceğimizi görelim.

.grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: repeat(3, 200px);
}

Bu kod, içerisinde bulunan tag’lerini;

  • Kolon olarak 50% 50% yapacak,
  • Row olarak 200px’lik 3 eşit parça oluşturacak.

Ekranda 6 parça alanımız oldu. Bu alanlara grid ile isim vererek, HTML bileşenlerimize konumlanacakları yeri belirtmiş olacağız.

grid-template-areas:
"head head"
"nav main"
"foot foot";

Dört adet bileşenimiz var; head, nav, main, foot.

Kodu okumaya çalışalım, head üstteki 2 alanı almış. Yani bu layoutun tepesinde 100%'lük bir alanı kapsayacağı anlamına geliyor.

nav ve main yatayda 50%'lik bir alan kapsıyor.

foot ise layout’un en altında 100%'lük alan kapsıyor.

Sonuç olarak;

Componentleri Layout’ta İlgili Alana Konumlandırmak

Layout’umuz hazır, sıra ilgili tag’leri konumlandırmak.

Yapmamız gereken tek şey grid-area ile aynı isimleri vermek.

Yani <header> tag’ine header { grid-area: head; } kodunu yazmak. Bu kod, header’ın layout’ta head alanlarına gitmesi demek.

Aynı şekilde;

nav {
grid-area: nav;
}
main {
grid-area: main;
}
footer {
grid-area: foot;
}

Bu tabii grid-template-areas’ın küçük bir özelliği, onlarca özelliği ile her türlü esnekliği bize sağlıyor. Yukarıda oluşturduğumuz yapıda, HTML’e müdahale etmeden sadece CSS ile HTML tag’lerinin yerlerini değiştirmekte mümkün.

Örneğin kapsayıcımızı aşağıda bulunan koda çevirirsek, HTML’de footer elemanımız DOM’da en altta olsa dahi, UI’da header’dan sonra gelecektir.

grid-template-areas:
"head head"
"foot foot"
"nav main";

Kişisel Blog Sitem: omergulcicek.com

Makaleyi alkışlayarak destek olabilirsiniz 🌹

--

--