CSS

CSS Grid ve Flexbox Mastery

12/20/2024
15 min read
CSSGridFlexboxLayoutResponsive Design

CSS Grid ve Flexbox Mastery

Modern web geliştirmede layout oluşturmanın en güçlü araçları CSS Grid ve Flexbox'tır. Bu rehberde her ikisini de derinlemesine inceleyeceğiz.

CSS Grid

CSS Grid, iki boyutlu layout'lar için mükemmel bir çözümdür.

.grid-container {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
  grid-gap: 20px;
  padding: 20px;
}

.grid-item {
  background: #f0f0f0;
  padding: 20px;
  border-radius: 8px;
}

Grid Template Areas

.layout {
  display: grid;
  grid-template-areas: 
    "header header header"
    "sidebar main main"
    "footer footer footer";
  grid-template-rows: auto 1fr auto;
  min-height: 100vh;
}

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

Flexbox

Flexbox, tek boyutlu layout'lar için idealdir.

.flex-container {
  display: flex;
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 16px;
}

.flex-item {
  flex: 1 1 200px; /* grow shrink basis */
  min-width: 0; /* overflow prevention */
}

Responsive Navigation

.nav {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem;
}

.nav-links {
  display: flex;
  gap: 2rem;
  list-style: none;
}

@media (max-width: 768px) {
  .nav-links {
    flex-direction: column;
    position: absolute;
    top: 100%;
    left: 0;
    width: 100%;
    background: white;
  }
}

Grid vs Flexbox Hangi Durumda?

CSS Grid Kullanın:

  • 2D layout'lar (satır ve sütun)
  • Sayfa düzeni (page layout)
  • Kart grid'leri
  • Karmaşık align'lar

Flexbox Kullanın:

  • 1D layout'lar (tek yön)
  • Component layout'ları
  • Navigation bar'lar
  • Form element'leri

Pratik Örnekler

Responsive Card Grid

.card-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 2rem;
  padding: 2rem;
}

.card {
  display: flex;
  flex-direction: column;
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
}

.card-content {
  padding: 1.5rem;
  flex: 1;
  display: flex;
  flex-direction: column;
}

.card-footer {
  margin-top: auto;
  padding-top: 1rem;
}

Center Everything

/* Grid ile */
.grid-center {
  display: grid;
  place-items: center;
  min-height: 100vh;
}

/* Flexbox ile */
.flex-center {
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 100vh;
}

Sonuç

CSS Grid ve Flexbox birlikte kullanıldığında, herhangi bir layout'u kolayca oluşturabilirsiniz. Grid büyük resim için, Flexbox detaylar için kullanın!