Web projelerinde kullanıcı deneyimini doğrudan etkileyen en kritik bileşenlerden biri, şüphesiz arama kutularıdır. Klasik CSS ile border, outline ve position özellikleri arasında kaybolmak yerine, Tailwind CSS’in sunduğu utility-first yaklaşımıyla dakikalar içinde modern bir yapı kurabilirsiniz. Özellikle focus-within, ring ve peer gibi sınıflar, interaktif bir deneyim sunmanızı inanılmaz derecede kolaylaştırıyor.
Eğer projenizde daha kapsamlı bir görsel dil oluşturuyorsanız, arama kutusu tasarımını Tailwind CSS v4 Özel Renk Ekleme rehberimizdeki renk paletleriyle uyumlu hale getirmeniz bütünlük açısından faydalı olacaktır. Şimdi temel yapıdan başlayıp, animasyonlu ve erişilebilir bir arama çubuğuna doğru ilerleyelim.
Başlangıç: Temel Arama Kutusu (Input & Button)
Bir arama kutusu tasarlarken yapılan en yaygın hata, input ve butonu hizalamak için karmaşık flex yapıları veya float kullanmaktır. Oysa Tailwind’de bunu çözmenin en temiz yolu, kapsayıcı elemana relative, içindeki butona ise absolute değeri vermektir. Bu yöntem, butonun input alanının sınırları içindeymiş gibi görünmesini sağlar.
Aşağıdaki örnekte, kenarları yuvarlatılmış ve basit bir gölgeye sahip standart bir yapı kuruyoruz:
<form class="max-w-md mx-auto">
<label for="default-search" class="mb-2 text-sm font-medium text-gray-900 sr-only">Ara</label>
<div class="relative">
<div class="absolute inset-y-0 start-0 flex items-center ps-3 pointer-events-none">
<svg class="w-4 h-4 text-gray-500" aria-hidden="true" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 20 20">
<path stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="m19 19-4-4m0-7A7 7 0 1 1 1 8a7 7 0 0 1 14 0Z"/>
</svg>
</div>
<input type="search" id="default-search" class="block w-full p-4 ps-10 text-sm text-gray-900 border border-gray-300 rounded-lg bg-gray-50 focus:ring-blue-500 focus:border-blue-500" placeholder="Arama yapın..." required />
<button type="submit" class="text-white absolute end-2.5 bottom-2.5 bg-blue-700 hover:bg-blue-800 focus:ring-4 focus:outline-none focus:ring-blue-300 font-medium rounded-lg text-sm px-4 py-2">Ara</button>
</div>
</form>Bu kod bloğunda dikkat etmeniz gereken en önemli nokta padding yönetimidir. İkonu absolute ile sola sabitlediğimiz için, input alanına ps-10 (padding-start) vererek yazının ikonun üzerine binmesini engelliyoruz.
UX İyileştirmeleri: Focus ve Hover Efektleri
Kullanıcı arama kutusuna tıkladığında tarayıcının varsayılan mavi/siyah çerçevesinin çıkması, modern tasarım algısını bozan bir durum. Bunun yerine Tailwind’in ring özelliğini kullanarak markanıza uygun yumuşak bir odaklanma efekti yaratmalısınız.
Input alanına focus:outline-none ekleyerek varsayılan çerçeveyi kaldırıyor ve yerine focus:ring-2 focus:ring-indigo-500 gibi sınıflarla kontrolü elimize alıyoruz. Bu küçük dokunuş, form elemanının aktif olduğunu kullanıcıya çok daha şık bir dille anlatıyor. Görsel geri bildirimi güçlendirmek isterseniz, Alt Çizgi Animasyonu mantığını input alanının alt border'ına da uygulayabilirsiniz.
İkon Entegrasyonu ve Konumlandırma
Modern arayüzlerde Ara yazan koca bir buton yerine, genellikle büyüteç ikonu tercih ediliyor. Burada Heroicons gibi SVG tabanlı kütüphaneler işinizi çok kolaylaştırır. İkonu sağa veya sola yaslarken top-1/2 ve -translate-y-1/2 sınıflarını birlikte kullanarak dikeyde tam ortalama yapabilirsiniz. Bu yöntem, input yüksekliği değişse bile ikonun her zaman merkezde kalmasını sağlar.
Gelişmiş Örnek: Animasyonlu ve Genişleyen Arama Çubuğu
Eğer header alanında yer tasarrufu yapmak istiyorsanız, sadece tıklandığında genişleyen bir arama kutusu harika bir çözümdür. Tailwind’in transition-all sınıfı burada devreye giriyor.
<div class="flex justify-center">
<div class="relative">
<input
type="text"
class="w-40 focus:w-80 transition-all duration-300 ease-in-out border border-gray-300 rounded-full py-2 px-4 focus:outline-none focus:border-indigo-500 focus:ring-1 focus:ring-indigo-500 placeholder-gray-500 text-gray-700"
placeholder="Genişleyen arama..."
/>
<span class="absolute right-3 top-1/2 transform -translate-y-1/2 text-gray-400">
<svg class="w-5 h-5" fill="none" stroke="currentColor" viewBox="0 0 24 24"><path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M21 21l-6-6m2-5a7 7 0 11-14 0 7 7 0 0114 0z"></path></svg>
</span>
</div>
</div>Bu yapıda input’un varsayılan genişliği w-40 iken, odaklanıldığında (focus:w-80) genişlik iki katına çıkıyor. duration-300 ise bu geçişin yumuşak olmasını sağlıyor. Eğer sitenizde gece modu kullanıyorsanız, bu inputların arka plan renklerini Dark Mode Yapımı rehberimizdeki dark: sınıflarıyla güncellemeyi unutmayın.
Erişilebilirlik (Accessibility) ve Mobil Uyumluluk
Geliştiricilerin en sık atladığı nokta erişilebilirliktir. Bir arama kutusu sadece fare ile değil, klavye (Tab tuşu) ve ekran okuyucularla da tam uyumlu çalışmalıdır.
- Label Kullanımı: Tasarımda görünmese bile, her input için mutlaka bir
<label>etiketi ekleyin ve bunusr-only(screen reader only) sınıfı ile gizleyin. Bu sayede görme engelli kullanıcılar o alanın ne işe yaradığını duyabilir. - Mobil Optimizasyon: Mobilde input alanının ekrandan taşmaması için
w-fullsınıfını kullanın ancak geniş ekranlarda devasa görünmemesi içinmax-w-mdgibi bir kısıtlama getirin.
Sıkça Yapılan Hatalar
Tailwind ile arama kutusu tasarlarken şu tuzaklara düşmemeye özen gösterin:
- Z-Index Karmaşası: Eğer arama kutunuz açılır bir menünün (dropdown) altında kalıyorsa, kapsayıcıya
z-10veya üzeri bir değer vererek katman sırasını düzeltin. - Form Etiketi Eksikliği: Input ve butonu sadece bir
diviçine almak yeterli değildir. Kullanıcının Enter tuşuna bastığında arama yapabilmesi için yapıyı mutlaka<form>etiketi içine alın.
Bu tekniklerle, sitenizin hem performansını koruyan hem de kullanıcı dostu bir arama deneyimi sunan profesyonel bileşenler oluşturabilirsiniz.
Yorumlar (0)
Yorum yapmak için giriş yapın
Şikayet Et