Ana Karargâh Neler Yapıyoruz?
Hikayemizin Perde Arkası Beyin Kıvılcımları Bağlantıya Geçin

CSS Grid ile Modern Web Düzenleri Oluşturmanın Yolları

CSS Grid, web sayfalarında karmaşık ve esnek düzenler oluşturmak için güçlü bir araçtır. İşte CSS Grid kullanarak modern web düzenleri oluşturmanın çeşitli yolları:

1. Temel Grid Yapısı

Basit bir grid yapısı oluşturmakla başlayalım:


<div class="grid-container">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>

<style>
.grid-container {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
}

.item {
  background-color: #f0f0f0;
  padding: 20px;
  text-align: center;
}
</style>

2. Farklı Boyutlarda Grid Öğeleri

Grid öğelerinin boyutlarını özelleştirerek daha dinamik düzenler oluşturabilirsiniz:


<div class="grid-container">
  <div class="item item-1">1</div>
  <div class="item item-2">2</div>
  <div class="item item-3">3</div>
  <div class="item item-4">4</div>
</div>

<style>
.grid-container {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-template-rows: repeat(2, 100px);
  grid-gap: 10px;
}

.item-1 {
  grid-column: span 2;
  grid-row: span 2;
}

.item-4 {
  grid-column: span 2;
}
</style>

3. Grid Alanları ile Sayfa Düzeni

Grid alanlarını kullanarak tipik bir web sayfası düzeni oluşturalım:


<div class="page-layout">
  <header>Header</header>
  <nav>Navigation</nav>
  <main>Main Content</main>
  <aside>Sidebar</aside>
  <footer>Footer</footer>
</div>

<style>
.page-layout {
  display: grid;
  grid-template-areas:
    "header header header"
    "nav main aside"
    "footer footer footer";
  grid-template-columns: 200px 1fr 200px;
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

header { grid-area: header; }
nav { grid-area: nav; }
main { grid-area: main; }
aside { grid-area: aside; }
footer { grid-area: footer; }

/* Stil için */
.page-layout > * {
  padding: 20px;
  background-color: #f0f0f0;
  border: 1px solid #ccc;
}
</style>

4. Responsive Grid Düzeni

Media queries kullanarak responsive bir grid düzeni oluşturalım:


<div class="responsive-grid">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item">6</div>
</div>

<style>
.responsive-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  grid-gap: 20px;
}

.item {
  background-color: #f0f0f0;
  padding: 20px;
  text-align: center;
}

@media (max-width: 600px) {
  .responsive-grid {
    grid-template-columns: 1fr;
  }
}
</style>

5. Grid ile Overlapping Öğeler

Grid'in öğeleri üst üste bindirme yeteneğini kullanalım:


<div class="overlap-grid">
  <div class="background">Background</div>
  <div class="content">Content</div>
  <div class="overlay">Overlay</div>
</div>

<style>
.overlap-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-template-rows: repeat(3, 100px);
}

.background {
  grid-column: 1 / -1;
  grid-row: 1 / -1;
  background-color: #f0f0f0;
}

.content {
  grid-column: 2 / 3;
  grid-row: 2 / 3;
  background-color: white;
  z-index: 1;
}

.overlay {
  grid-column: 2 / 4;
  grid-row: 1 / 3;
  background-color: rgba(0, 0, 0, 0.3);
}

.overlap-grid > * {
  display: flex;
  justify-content: center;
  align-items: center;
}
</style>

6. Grid ile Masonry Benzeri Düzen

CSS Grid kullanarak masonry benzeri bir düzen oluşturalım:


<div class="masonry-grid">
  <div class="item">1</div>
  <div class="item">2</div>
  <div class="item tall">3</div>
  <div class="item">4</div>
  <div class="item">5</div>
  <div class="item tall">6</div>
</div>

<style>
.masonry-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  grid-auto-rows: 20px;
  grid-gap: 20px;
}

.item {
  background-color: #f0f0f0;
  padding: 20px;
}

.item.tall {
  grid-row: span 2;
}

@media (max-width: 600px) {
  .masonry-grid {
    grid-template-columns: 1fr;
  }
}
</style>

<script>
// Bu script, öğelerin yüksekliklerine göre grid-row-end değerlerini ayarlar
function resizeGridItem(item) {
  const grid = document.querySelector('.masonry-grid');
  const rowHeight = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-auto-rows'));
  const rowGap = parseInt(window.getComputedStyle(grid).getPropertyValue('grid-row-gap'));
  const rowSpan = Math.ceil((item.querySelector('.content').getBoundingClientRect().height + rowGap) / (rowHeight + rowGap));
  item.style.gridRowEnd = 'span ' + rowSpan;
}

document.querySelectorAll('.masonry-grid .item').forEach(resizeGridItem);
window.addEventListener('resize', () => {
  document.querySelectorAll('.masonry-grid .item').forEach(resizeGridItem);
});
</script>

7. Grid ile Karmaşık Galeri Düzeni

Farklı boyutlarda görselleri düzenlemek için grid kullanalım:


<div class="gallery-grid">
  <img src="image1.jpg" alt="Image 1" class="wide">
  <img src="image2.jpg" alt="Image 2">
  <img src="image3.jpg" alt="Image 3" class="tall">
  <img src="image4.jpg" alt="Image 4">
  <img src="image5.jpg" alt="Image 5">
  <img src="image6.jpg" alt="Image 6" class="big">
</div>

<style>
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  grid-gap: 10px;
}

.gallery-grid img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.wide {
  grid-column: span 2;
}

.tall {
  grid-row: span 2;
}

.big {
  grid-column: span 2;
  grid-row: span 2;
}
</style>

Bu örnekler, CSS Grid'in modern web düzenleri oluştururken ne kadar güçlü ve esnek olabileceğini göstermektedir. Grid ile karmaşık düzenler oluşturabilir, responsive tasarımlar yapabilir ve geleneksel yöntemlerle zor olan düzenleri kolayca elde edebilirsiniz. Uygulamanızın ihtiyaçlarına ve tasarım gereksinimlerinize göre bu teknikleri kullanabilir ve özelleştirebilirsiniz.