TAILWIND RESPONSIVE UTILITY KULLANMAK

Aşağıda Tailwind responsive utility'lerinin nasıl çalıştığını, kırılma noktası mantığını, sık kullanılan desenleri ve performans dostu uygulamaları örneklerle anlatıyoruz. Tek bir HTML elemanına farklı ekranlarda farklı davranış tanımlamak utility sınıflarıyla mümkün hale gelir.
1. Tailwind kırılma noktaları
Tailwind varsayılan beş kırılma noktasıyla gelir; sınıfların tam listesi ve davranışları için resmi Tailwind dokümantasyonu sürekli güncel kalan en sağlam kaynaktır.
| Ön ek | Cihaz | Min genişlik |
|---|---|---|
| (yok) | Telefon (varsayılan) | 0px |
| sm | Büyük telefon, küçük tablet | 640px |
| md | Tablet | 768px |
| lg | Laptop | 1024px |
| xl | Masaüstü | 1280px |
| 2xl | Büyük ekran | 1536px |
Bu ön ekler "şu ekran boyutundan başlayarak" anlamına gelir. md:p-8 derseniz "768 piksel ve üstünde padding 8 olsun" demektir; daha küçük ekranlarda padding farklı olur.
2. Mobile-first mantığı
Tailwind'in en önemli prensibi: önce mobil yaz; sonra büyük ekranlar için override et.
<!-- Yanlış (desktop-first düşünce) -->
<div class="text-xl sm:text-base">
Büyük ekranda küçük olsun?
</div>
<!-- Doğru (mobile-first) -->
<div class="text-base md:text-xl">
Telefonda küçük (base), tablet ve üstünde büyük (xl)
</div>Ön ek olmayan sınıflar tüm ekranlar için varsayılan; ön ekli sınıflar belirli ekran ve üstü için geçerli. Bu mantığı kavradığınızda responsive yazımı bütünüyle değişir.
3. Sık kullanılan responsive desenler
Mobilde tek sütun, masaüstünde iki sütun
<div class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>Sol içerik</div>
<div>Sağ içerik</div>
</div>Mobilde gizli, masaüstünde görünür (örneğin sidebar)
<aside class="hidden lg:block w-64">
Sadece laptop ve üstünde görünür
</aside>
<!-- Tersi: mobilde görünür, masaüstünde gizli -->
<button class="block lg:hidden">
Hamburger menü (sadece mobilde)
</button>Mobilde stack, masaüstünde yan yana (flexbox)
<div class="flex flex-col md:flex-row gap-4">
<div>Kart 1</div>
<div>Kart 2</div>
<div>Kart 3</div>
</div>Görsel boyutu ekrana göre değişen
<img src="..." class="w-full md:w-1/2 lg:w-1/3">
<!-- Mobilde tam, tablet'te yarım, laptop'ta üçte bir genişlik -->Tipografi ölçeği
<h1 class="text-3xl md:text-4xl lg:text-5xl xl:text-6xl">
Ekran büyüdükçe başlık büyür
</h1>Padding ve margin ölçekleri
<section class="p-4 md:p-8 lg:p-12 xl:p-16">
Mobilde dar padding, masaüstünde geniş
</section>
4. Container ve max-width
Tailwind'in container sınıfı responsive bir yapı sağlar; ekran boyutuna göre genişlik değiştirir.
<div class="container mx-auto px-4">
İçerik buraya
</div>Ortalamak için mx-auto
Ama container'ı her zaman ortalamak için mx-auto eklenmesi gerekir. px-4 kenarlardan boşluk verir; çok kenara yapışmasın diye.
Maksimum genişlik kontrolü
Maksimum genişlik kontrolü için ayrı sınıflar:
<article class="max-w-prose mx-auto">
Okuma için ideal genişlik (~65 karakter)
</article>
<div class="max-w-7xl mx-auto">
Sayfa ana içerik (1280px)
</div>5. Responsive form düzeni
Bir formun mobilde tek sütun, masaüstünde iki sütun olması yaygın istek.
<form class="grid grid-cols-1 md:grid-cols-2 gap-4">
<div>
<label class="block text-sm font-medium">Ad</label>
<input type="text" class="w-full border rounded px-3 py-2">
</div>
<div>
<label class="block text-sm font-medium">Soyad</label>
<input type="text" class="w-full border rounded px-3 py-2">
</div>
<div class="md:col-span-2">
<label class="block text-sm font-medium">Mesaj</label>
<textarea class="w-full border rounded px-3 py-2"></textarea>
</div>
</form>Burada md:col-span-2 mesaj alanının masaüstünde iki sütunu da kaplamasını sağlıyor.
6. Mobilde hamburger menü
<nav class="flex items-center justify-between p-4">
<div>Logo</div>
<!-- Masaüstü menü -->
<ul class="hidden md:flex gap-6">
<li>Anasayfa</li>
<li>Hakkımızda</li>
<li>İletişim</li>
</ul>
<!-- Hamburger butonu (mobilde) -->
<button class="md:hidden">☰</button>
</nav>JavaScript ile hamburger tıklandığında açılan mobil menü için ek state yönetimi gerekir; React veya Alpine.js ile kombinlenir.
7. Responsive img yükleme
Tailwind doğrudan görsel kaynağını değiştirmez (bu HTML attribute işi) ama görselin nasıl davrandığını kontrol eder.
<picture>
<source media="(min-width: 768px)" srcset="masaustu.webp">
<img src="mobil.webp" alt="..."
class="w-full h-64 md:h-96 object-cover">
</picture>Burada srcset ile gerçek dosya farklılaşır (performans için), Tailwind sınıfları ise davranışı kontrol eder.
8. Hover ve focus durumları
Responsive yanında durum sınıfları (state variants) da Tailwind'in gücüdür.
<button class="
bg-blue-500
hover:bg-blue-600
focus:ring-2 focus:ring-blue-300
md:px-8 md:py-3
">
Detay
</button>Bir sınıfı hem ekran ön ekiyle hem durum ön ekiyle birleştirmek mümkün: md:hover:bg-blue-700 "masaüstünde hover'da koyu mavi" demek.
9. Layout kayması (CLS) önleme
Responsive layout yaparken sayfa yüklenirken oynaması (Cumulative Layout Shift) yaygın sorun. Tailwind ile çözüm:
- Görsellere boyut verin:
w-full h-64 md:h-96ile yüksekliği önceden belirleyin; görsel yüklenirken sayfa oynamaz - Aspect ratio kullanın:
aspect-video,aspect-squaresınıfları oranı korur - Font boyutu sabitliği: Web font yüklenirken yedek font ile yaklaşık aynı boyut tutulmalı;
font-display: swap - Yer tutucu alanlar: Yorum sayısı, dinamik veri yüklenirken minimum height verin
10. Performans ipuçları
JIT (Just-In-Time) compiler
Tailwind v3'ten beri JIT varsayılan. Sadece kullanılan sınıflar derleme çıktısına dahil; CSS dosya boyutu çok küçük (5-15 KB).
PurgeCSS otomatik
Üretim build'inde Tailwind tüm kullanılmayan sınıfları otomatik çıkarır. tailwind.config.js'deki content alanı doğru ayarlandığında çalışır.
Custom değer kullanımı
Standart spacing yetmediğinde [arbitrary] sözdizimi var: w-[173px], text-[#1234ab]. Bu özellik kötüye kullanılmamalı; her custom değer design system'inden sapma anlamına gelir.

11. Sık Görülen Sorunlar hatalar
- Desktop-first düşünmek: Tailwind mobile-first; ön ekler sadece "şundan büyük" işe yarar. md:hidden mobilde gizler değil; tablet ve üstünde gizler
- Aşırı custom değer: w-[473px] gibi her boyutu özel yazmak design system'i bozar; spacing scale'i kullanın
- Tüm breakpoint'ler için yazmak: "sm:text-base md:text-base lg:text-base" gibi tekrar; tek "text-base" yeterli
- hidden ve visible karışıklığı: hidden sınıfı display:none; visibility:invisible için ayrı sınıf var
- Container'ı manuel ortalamak: container sınıfı tek başına ortalama yapmaz; mx-auto eklenmeli
12. Sonraki Hamle
Tailwind responsive yaklaşımı modern frontend'in temel becerilerinden. Pratiği sürekli biçimde geliştirmek için Tailwind CSS eğitimi programları utility-first felsefe, kırılma noktaları ve component yapısını uygulamalı şekilde aktarır.
Özetle
Tailwind responsive utility'leri; mobile-first felsefe ile ön ekleri (sm, md, lg, xl, 2xl) kullanarak tek bir HTML elemanına farklı ekranlarda farklı davranış kazandırır. Sık kullanılan desenler (mobilde tek sütun masaüstünde grid, hamburger menü, hidden-block geçişi) standart sınıflarla 1-2 satırda kurulur. JIT compiler ve PurgeCSS sayesinde CSS dosya boyutu küçük kalır. Performans dostu ve okunabilir bir yaklaşımdır; ekipler aynı dili konuşur, kod inceleme kolaylaşır. Sıfırdan başlayan modern projelerde Tailwind responsive sistemi neredeyse her durumda doğru seçimdir.
Sıkça Sorulan Sorular
Tailwind responsive sistemini kullanırken neden mobile-first?
Mobile-first iki ana avantaj sağlar. Birincisi: dünya internet trafiğinin yüzde 60'ı mobilden; mobil deneyimi öncelikli tasarlamak doğru iş kararı. İkincisi: CSS'te 'küçük genişlikten büyük genişliğe' geçişi yönetmek 'büyükten küçüğe'den daha kolay. Tailwind ön ekleri bu mantığa göre çalışır; ön ek olmayan sınıflar tüm ekranlar için, ön ekli sınıflar belirli boyutun üstü için.
Kırılma noktalarını özelleştirebilir miyim?
Evet, tailwind.config.js'de theme.screens kısmından özelleştirilir. Ama Tailwind'in varsayılanları çok deneyim sonucu seçilmiştir; çoğu proje için yeterlidir. Yalnızca özel cihaz ihtiyaçları olan projelerde (örneğin akıllı saat veya büyük ekran televizyon için) özelleştirme gerekir. Standart projelerde varsayılanı kullanmak ekip içi tutarlılık açısından daha iyidir.
hidden ve md:hidden farkı nedir?
hidden tüm ekranlarda elemanı gizler. md:hidden ise 'md ve üstünde gizle' demektir; daha küçük ekranlarda görünür. Mobilde hamburger butonu görünür, masaüstünde gizli olsun isteniyorsa: 'block md:hidden' kullanılır. Tersine sidebar gibi mobilde gizli masaüstünde görünür için: 'hidden md:block' kullanılır.
Container ve max-w-7xl arasındaki fark nedir?
container sınıfı her kırılma noktasında belirli bir max-width değeri uygular (sm:max-w-screen-sm, md:max-w-screen-md gibi). max-w-7xl ise sabit bir maksimum genişlik (1280px) verir. Container responsive akışkanlık sağlar; her ekrana uyarlı tek bir yapı. max-w-* tek sabit max-width verir. Çoğu modern projede max-w-* + mx-auto kombinasyonu container'dan daha pratik.
Mobil menü için JavaScript kütüphanesi gerekli mi?
Açılır kapanır mobil menü için evet, JavaScript şart. Alpine.js (5KB) en hafif çözüm; küçük etkileşimler için ideal. React/Vue projelerinde framework'ün kendi state yönetimi yeterli. Headless UI veya Radix UI ile erişilebilirlik standartlarına uygun hazır mobil menü bileşenleri kullanılabilir. Saf CSS ile checkbox hack'i mümkün ama önerilmez; karmaşık ve erişilebilirlik sorunlu.
Tailwind responsive'de medya sorgularını manuel yazabilir miyim?
Evet ama tavsiye edilmez. Tailwind'in tüm felsefesi utility class'ları kullanmak; manuel media query yazmak bu yaklaşımı kırar. Bazen özel ihtiyaçlar için (örneğin print için stil) @media print kullanmak gerekir; Tailwind print: ön eki bunun için var. Yine de standart kullanım: önce Tailwind sınıflarıyla çözmeye çalış, çözemezsen custom CSS ekle.
Tailwind dosya boyutu çok büyük olur mu?
Geliştirme sırasında evet (4MB+); ama üretim build'i sonrası çok küçük. JIT compiler (Tailwind v3 ve üstü varsayılan) sadece projenizde kullanılan sınıfları derler. Tipik bir orta ölçekli sitenin üretim CSS boyutu 5-15 KB arası. content alanını doğru ayarladığınız sürece (HTML, JS, JSX, Vue dosyalarını tarayacak şekilde) PurgeCSS otomatik çalışır.


