İçeriğe geç
CSS

Tailwind CSS ile Responsive Tasarım Stratejileri

Tarık Tunç
Tailwind CSS ile Responsive Tasarım Stratejileri

Tailwind CSS ile Responsive Tasarım Stratejileri

Tailwind CSS, mobile-first responsive tasarım için güçlü bir breakpoint sistemi sunar. Responsive modifier'lar sayesinde, farklı ekran boyutlarına özel stiller tanımlamak son derece kolay ve sezgiseldir. Bu rehberde Tailwind'in responsive sistemini derinlemesine inceleyecek, gerçek dünya layout pattern'lerini ve container query entegrasyonunu ele alacağız.

1. Breakpoint Sistemi ve Mobile-First Yaklaşım

Tailwind, mobile-first yaklaşımı benimser. Modifier olmadan yazılan stiller tüm ekran boyutlarında geçerlidir. sm:, md:, lg: modifier'ları min-width media query'leri oluşturur.

<!-- Varsayılan Breakpoint'ler (Tailwind v4) -->
<!-- sm: 640px, md: 768px, lg: 1024px, xl: 1280px, 2xl: 1536px -->

<!-- Responsive Grid: Mobilde 1, tablette 2, masaüstünde 3 sütun -->
<div class="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 xl:grid-cols-4 gap-6">
  <div class="bg-white rounded-xl shadow-md p-6">Card 1</div>
  <div class="bg-white rounded-xl shadow-md p-6">Card 2</div>
  <div class="bg-white rounded-xl shadow-md p-6">Card 3</div>
  <div class="bg-white rounded-xl shadow-md p-6">Card 4</div>
</div>

<!-- Responsive Typography -->
<h1 class="text-2xl sm:text-3xl md:text-4xl lg:text-5xl
           font-bold leading-tight">
  Modern Web Geliştirme Rehberi
</h1>

<!-- Responsive Padding ve Margin -->
<section class="px-4 sm:px-6 lg:px-8 py-8 sm:py-12 lg:py-20">
  <div class="max-w-7xl mx-auto">
    <!-- İçerik -->
  </div>
</section>

<!-- Responsive Visibility -->
<nav class="flex items-center justify-between">
  <a href="/" class="text-xl font-bold">Logo</a>

  <!-- Masaüstü menü (mobilde gizli) -->
  <div class="hidden md:flex items-center gap-6">
    <a href="#">Ana Sayfa</a>
    <a href="#">Blog</a>
    <a href="#">İletişim</a>
  </div>

  <!-- Hamburger butonu (masaüstünde gizli) -->
  <button class="md:hidden p-2">
    <svg class="w-6 h-6" fill="none" viewBox="0 0 24 24" stroke="currentColor">
      <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2"
            d="M4 6h16M4 12h16M4 18h16" />
    </svg>
  </button>
</nav>
Bilgi: Tailwind'de responsive modifier'lar min-width kullanır, yani md:flex "768px ve üzerinde flex uygula" anlamına gelir. max-width için max-md: modifier'ını kullanabilirsiniz.

2. Gerçek Dünya Layout Pattern'leri

Responsive tasarımda en sık karşılaşılan layout senaryoları ve bunların Tailwind ile nasıl çözüldüğüne bakalım:

<!-- Dashboard Layout -->
<div class="min-h-screen flex">
  <!-- Sidebar: Mobilde gizli, masaüstünde sabit -->
  <aside class="hidden lg:block lg:w-64 lg:flex-shrink-0
                bg-gray-900 text-white">
    <nav class="p-4 space-y-2">
      <a href="#" class="block px-4 py-2 rounded-lg bg-gray-800">Dashboard</a>
      <a href="#" class="block px-4 py-2 rounded-lg hover:bg-gray-800">Projeler</a>
      <a href="#" class="block px-4 py-2 rounded-lg hover:bg-gray-800">Ayarlar</a>
    </nav>
  </aside>

  <!-- Ana İçerik -->
  <main class="flex-1 p-4 sm:p-6 lg:p-8">
    <!-- Stats Grid -->
    <div class="grid grid-cols-1 sm:grid-cols-2 xl:grid-cols-4 gap-4 mb-8">
      <div class="bg-white rounded-xl p-6 shadow-sm border">
        <p class="text-sm text-gray-500">Toplam Gelir</p>
        <p class="text-2xl font-bold mt-1">₺124,500</p>
      </div>
      <!-- Diğer stat card'ları -->
    </div>

    <!-- İki sütunlu alan -->
    <div class="grid grid-cols-1 lg:grid-cols-3 gap-6">
      <div class="lg:col-span-2 bg-white rounded-xl p-6 shadow-sm">
        <!-- Grafik alanı -->
      </div>
      <div class="bg-white rounded-xl p-6 shadow-sm">
        <!-- Yan panel -->
      </div>
    </div>
  </main>
</div>

<!-- Blog Post Layout -->
<article class="max-w-none lg:max-w-4xl mx-auto px-4 sm:px-6 py-12">
  <header class="mb-8 sm:mb-12">
    <h1 class="text-3xl sm:text-4xl lg:text-5xl font-bold mb-4">
      Yazı Başlığı
    </h1>
    <div class="flex flex-col sm:flex-row sm:items-center gap-2 sm:gap-4
                text-sm text-gray-500">
      <span>Tarik Tunç</span>
      <span class="hidden sm:inline">·</span>
      <time>15 Mart 2026</time>
      <span class="hidden sm:inline">·</span>
      <span>8 dk okuma</span>
    </div>
  </header>
</article>

3. Responsive Image ve Media Stratejileri

Tailwind ile görsellerin responsive davranışını kontrol etmek ve farklı ekran boyutlarında farklı düzenler uygulamak oldukça kolaydır.

<!-- Responsive Hero —  Mobilde dikey, masaüstünde yatay -->
<section class="flex flex-col-reverse lg:flex-row items-center
                gap-8 lg:gap-16 px-4 py-12 lg:py-24">
  <div class="flex-1 text-center lg:text-left">
    <h1 class="text-3xl sm:text-4xl lg:text-5xl font-bold mb-4">
      Modern Web Geliştirme
    </h1>
    <p class="text-gray-600 text-lg mb-8 max-w-xl mx-auto lg:mx-0">
      Tailwind CSS ile hızlı ve responsive arayüzler oluşturun.
    </p>
    <div class="flex flex-col sm:flex-row gap-4 justify-center lg:justify-start">
      <button class="px-8 py-3 bg-blue-500 text-white rounded-lg
                     hover:bg-blue-600">
        Başla
      </button>
      <button class="px-8 py-3 border-2 border-gray-300 rounded-lg
                     hover:border-gray-400">
        Daha Fazla
      </button>
    </div>
  </div>
  <div class="flex-1">
    <img src="/hero.webp" alt="Hero görsel"
         class="w-full max-w-lg mx-auto rounded-2xl shadow-xl" />
  </div>
</section>

<!-- Responsive Aspect Ratio -->
<div class="aspect-video sm:aspect-[4/3] lg:aspect-[21/9] overflow-hidden rounded-xl">
  <img src="/banner.webp" alt="Banner"
       class="w-full h-full object-cover" />
</div>

<!-- Responsive Spacing Scale -->
<div class="space-y-4 sm:space-y-6 lg:space-y-8">
  <!-- Elemanlar arası responsive boşluk -->
</div>
İpucu: Tailwind v4'te @theme ile özel breakpoint'ler tanımlayabilirsiniz: --breakpoint-xs: 480px;. Ayrıca min-[800px]:flex gibi arbitrary breakpoint'ler de kullanabilirsiniz.

4. Container Queries ve @screen Direktifi

Tailwind CSS v4, container query desteğini yerleşik olarak sunar. @container modifier'ı ile component bazlı responsive tasarım yapabilirsiniz.

<!-- Container Query ile Responsive Card -->
<div class="@container">
  <div class="flex flex-col @md:flex-row gap-4 p-4 bg-white rounded-xl">
    <img src="/image.webp" alt=""
         class="w-full @md:w-48 aspect-video @md:aspect-square
                object-cover rounded-lg" />
    <div class="flex-1">
      <h3 class="text-base @md:text-lg @lg:text-xl font-bold">
        Başlık
      </h3>
      <p class="text-sm text-gray-600 mt-2
                hidden @sm:block">
        Bu açıklama sadece container yeterince genişse görünür.
      </p>
    </div>
  </div>
</div>

<!-- Named Container -->
<div class="@container/sidebar">
  <div class="@md/sidebar:grid @md/sidebar:grid-cols-2 gap-4">
    <!-- Sidebar genişliğine göre değişen layout -->
  </div>
</div>

<!-- Responsive Table Alternatifi -->
<div class="@container">
  <div class="@md:hidden space-y-4">
    <!-- Card görünümü (dar container) -->
    <div class="bg-white p-4 rounded-lg shadow-sm">
      <p class="font-bold">Ürün Adı</p>
      <p class="text-gray-500">₺299</p>
    </div>
  </div>
  <table class="hidden @md:table w-full">
    <!-- Tablo görünümü (geniş container) -->
    <thead>
      <tr class="border-b">
        <th class="text-left py-3">Ürün</th>
        <th class="text-left py-3">Fiyat</th>
        <th class="text-left py-3">Stok</th>
      </tr>
    </thead>
  </table>
</div>
Uyarı: Container query class'ları (@container, @md:) Tailwind v4'te yerleşik olarak desteklenir. Tailwind v3 kullanıyorsanız @tailwindcss/container-queries eklentisini yüklemeniz gerekir.

Sonuç

Tailwind CSS'in responsive sistemi, mobile-first yaklaşım ve sezgisel modifier söz dizimi ile responsive tasarımı kolaylaştırır. Breakpoint modifier'ları ile viewport bazlı, container query'ler ile component bazlı responsive tasarım yapabilirsiniz. Önemli olan mobile-first düşünmek ve her breakpoint'te sadece değişmesi gereken özellikleri tanımlamaktır. Tailwind'in IntelliSense eklentisi (VS Code) ile autocomplete desteği, doğru class isimlerini bulmayı büyük ölçüde kolaylaştırır.

Kaynaklar

İlgili Yazılar