TAILWIND RESPONSIVE UTILITY KULLANMAK

Vimaj9 dk okuma
Tailwind teal T logosu yanında üç farklı genişlikte ekran çerçevesi mobil tablet masaüstü breakpoint sembolleri sm md lg xl etiketli

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 ekCihazMin genişlik
(yok)Telefon (varsayılan)0px
smBüyük telefon, küçük tablet640px
mdTablet768px
lgLaptop1024px
xlMasaüstü1280px
2xlBüyük ekran1536px

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>
VS Code karanlık tema editörde Tailwind HTML kodu solunda satır numaraları sağda Chrome tarayıcı mockup üç farklı genişlikte viewport mobil tablet masaüstü responsive preview

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-96 ile yüksekliği önceden belirleyin; görsel yüklenirken sayfa oynamaz
  • Aspect ratio kullanın: aspect-video, aspect-square sı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.

Beş satırlı yatay breakpoint cetveli sm 640 md 768 lg 1024 xl 1280 2xl 1536 piksel etiketli teal mavi navy renkli pill rozet aralıklar arasında pixel genişlik değerleri

11. Sık Görülen Sorunlar hatalar

  1. 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
  2. Aşırı custom değer: w-[473px] gibi her boyutu özel yazmak design system'i bozar; spacing scale'i kullanın
  3. Tüm breakpoint'ler için yazmak: "sm:text-base md:text-base lg:text-base" gibi tekrar; tek "text-base" yeterli
  4. hidden ve visible karışıklığı: hidden sınıfı display:none; visibility:invisible için ayrı sınıf var
  5. 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.

 Vimaj