Tailwind CSS v4.0 yayınlandı
(tailwindcss.com)- Tailwind CSS v4.0, framework’ün baştan yazıldığı bir sürüm; build performansını önemli ölçüde artırıyor ve ayar/özelleştirme akışını CSS merkezli hale getiriyor
- Catalyst ölçütüne göre tam build, v3.4’teki 378 ms’den v4.0’da 100 ms’ye inerek 3,78 kat hızlandı; yeni CSS olmayan incremental build ise 35 ms’den 192 µs’ye düşerek 182 kat iyileşti
- Kurulum, tek satırlık
@import "tailwindcss"ve sıfır yapılandırma varsayılanlarıyla sadeleşti; Vite kullanıcıları PostCSS yerine@tailwindcss/vitekullanabiliyor - v4.0; cascade layers,
@property,color-mix(), logical properties gibi modern CSS özelliklerinden yararlanıyor ve otomatik içerik algılama ile yerleşik@importişleme getiriyor - Container query’ler, 3D transform, genişletilmiş gradient API’si,
@starting-style,not-*,field-sizing,color-scheme,inertgibi özellikler çekirdek işlevlere dahil edilerek ayrı eklenti bağımlılığı azaltılıyor
Baştan yazılmış yüksek performanslı motor
- Tailwind CSS v4.0, yıllara dayanan mimari deneyime dayanarak framework’ün baştan yeniden yazıldığı bir sürüm
- Kendi proje benchmark’larında tam rebuild 3,5 kattan fazla, incremental build 8 kattan fazla hızlandı
- Catalyst ölçütüne göre medyan build süreleri şöyle
- Tam build: v3.4 378 ms → v4.0 100 ms, 3,78 kat iyileşme
- Yeni CSS içeren incremental rebuild: 44 ms → 5 ms, 8,8 kat iyileşme
- Yeni CSS içermeyen incremental rebuild: 35 ms → 192 µs, 182 kat iyileşme
- Yeni CSS derlemeyi gerektirmeyen incremental build’ler 100 kattan fazla hızlanarak mikrosaniye düzeyinde tamamlanıyor
- Bir projede ne kadar uzun çalışırsanız,
flex,col-span-2,font-boldgibi zaten kullanılmış sınıfları tekrar yazma olasılığınız o kadar artıyor; bu yüzden bu tür build’lerle sık karşılaşılıyor
- Bir projede ne kadar uzun çalışırsanız,
Modern CSS platformundan yararlanma
- v4.0, Tailwind CSS v3.0’dan bu yana gelişen web platformu özelliklerinden aktif biçimde yararlanıyor
- Başlıca temel CSS özellikleri şunlar
- Native cascade layers: Farklı stil kurallarının birbiriyle nasıl etkileşime girdiğini daha ayrıntılı denetler
- Registered custom properties: Gradient animasyonlarını mümkün kılar ve büyük sayfalarda performansı önemli ölçüde artırır
color-mix(): CSS değişkenleri vecurrentColordahil tüm renk değerlerinin opaklığını ayarlayabilir- Logical properties: RTL desteğini basitleştirir ve üretilen CSS boyutunu azaltır
- Bu özellikler Tailwind’in iç uygulamasını da sadeleştirerek hata yüzeyini azaltır ve bakımı kolaylaştırır
Kurulum ve build entegrasyonunun sadeleşmesi
- Kurulum akışı, adımları ve boilerplate’i azaltacak şekilde düzenlendi
npm i tailwindcss @tailwindcss/postcss- PostCSS eklentisine
@tailwindcss/postcssekleme - CSS dosyasında
@import "tailwindcss"kullanma
- v4.0’da
@tailwinddirektifleri yerine tek satır CSS ile Tailwind’i içe aktarıp kullanabilirsiniz - Şablon dosyası yolları dahil hiçbir ayar yapmadan başlayabileceğiniz sıfır yapılandırma akışı sunar
- Ayrı bir harici eklenti olmadan
@importkurallarını bundle eder; vendor prefixing ve modern söz dizimi dönüşümü için içeride Lightning CSS kullanır - Vite kullanıcıları PostCSS yerine
@tailwindcss/viteseçebilir- Tailwind CSS v4.0 PostCSS eklentisi olarak da hızlıdır, ancak Vite eklentisi kullanıldığında daha iyi performans elde edilebilir
Otomatik içerik algılama ve yerleşik import
- v3’te gerekli olan
contentdizisi ayarı, v4.0’daki otomatik algılama sezgisel kurallarıyla değiştirildi .gitignoreiçindeki öğeler otomatik olarak yok sayılır; böylece bağımlılıklar veya versiyon kontrolünde olmayan üretilmiş dosyalar taranmaz- Örn:
/node_modules,/coverage,/.next,/build
- Örn:
- Görseller, videolar,
.zipgibi binary uzantılar da otomatik olarak yok sayılır - Varsayılan olarak hariç tutulan kaynakları açıkça eklemek gerektiğinde CSS dosyası içinde
@sourcedirektifi kullanılabilir@source "../node_modules/@my-company/ui-lib";@sourceda aynı sezgisel kuralları kullandığından binary dosya tipleri, ayrıca uzantı belirtmeden hariç tutulur
- v4.0’dan önce başka CSS dosyalarını
@importile inline etmek içinpostcss-importgibi ayrı bir eklenti gerekiyordu; artık yerleşik import desteği sayesinde başka araca gerek yok- Import sistemi Tailwind CSS’e özel olarak geliştirildi ve motorla sıkı entegre olduğundan daha hızlı çalışıyor
CSS-first yapılandırma ve theme variables
- v4.0’daki büyük değişikliklerden biri, proje yapılandırmasının JavaScript yerine doğrudan CSS içinde yapılması
tailwind.config.jsdosyası yerine, Tailwind’i import eden CSS dosyası içinde@themekullanarak özelleştirme yapılabilir- Design token ayarları
- Özel utility tanımlama
- Özel variant tanımlama
@themeiçinde tanımlanan design token’lar varsayılan olarak CSS değişkenleri olarak dışa açılır- Örn:
--font-display,--breakpoint-3xl,--color-avocado-500,--ease-fluid
- Örn:
- Bu şekilde oluşturulan CSS değişkenleri runtime’da normal CSS olarak referans verilebilir
- Inline style yeniden kullanımı
- Animasyon işleme için Motion gibi kütüphanelere aktarma
Dinamik utility değerleri ve variant’lar
- v4.0, birçok utility ve variant’ın belirli arbitrary değerleri ayar gerektirmeden almasını sağlayarak sadeleşti
- Grid’de ayrı bir ayar olmadan istenen boyut kullanılabilir
- Örn:
grid grid-cols-15
- Örn:
- Özel boolean data attribute’lar da önceden tanımlanmadan hedeflenebilir
- Örn:
data-current:opacity-100
- Örn:
px-*,mt-*,w-*,h-*gibi spacing utility’leri tek bir spacing scale değişkeninden dinamik olarak türetilir- Örn:
--spacing: 0.25rem w-17,calc(var(--spacing) * 17)biçiminde üretilir
- Örn:
- v4.0 ile birlikte gelen yükseltme aracı, artık gerekli olmayan arbitrary value söz dizimini tespit ettiğinde çoğunlukla otomatik olarak sadeleştirir
Renk paleti ve container query’ler
- Varsayılan renk paletinin tamamı
rgb’denoklch’ye yükseltildi- sRGB renk uzayının sınırlarının ötesine geçerek daha geniş gamut’tan yararlanır ve renkleri daha canlı hale getirir
- v3 ile renkler arasındaki denge korunmaya çalışıldığı için mevcut projeler yükseltilirken breaking change gibi hissedilmemeli
- Container query desteği v4.0’da çekirdeğe alındı;
@tailwindcss/container-querieseklentisine artık gerek yok - Yeni
@max-*variant’ı ile max-width container query kullanılabilir - Normal breakpoint variant’larında olduğu gibi
@min-*ve@max-*üst üste konularak container query aralığı tanımlanabilir
3D transform ve gradient API genişlemesi
- v4.0, 3D transform için API ekliyor
rotate-x-*rotate-y-*scale-z-*translate-z-*
- Gradient işlevleri de genişletildi; özel CSS yazmadan daha çeşitli efektler oluşturulabilir
- Linear gradient’ler açıları değer olarak alabilir
- Örn:
bg-linear-45 - Mevcut
bg-gradient-*,bg-linear-*olarak yeniden adlandırıldı
- Örn:
- Gradient renk enterpolasyon modu modifier ile denetlenebilir
bg-linear-to-r/srgbbg-linear-to-r/oklch- v4.0’da varsayılan enterpolasyon OKLAB’dir; başka renk uzayı modifier’ları da kullanılabilir
- Yeni
bg-conic-*,bg-radial-*utility’leriyle conic ve radial gradient oluşturulabilir- Mevcut
from-*,via-*,to-*ile birlikte çalışır - Renk enterpolasyonu yöntemi ayarı modifier’ları ve gradient konumu gibi ayrıntılı kontroller için arbitrary value desteği içerir
- Mevcut
Yeni variant’lar ve utility’ler
- Yeni
startingvariant’ı CSS@starting-styledesteği sunar- Bir öğe ilk kez gösterildiğinde özellik transition’ı oluşturabilir
- Sayfada beliren öğeleri JavaScript olmadan animasyonlu hale getirebilir
- Tarayıcı desteği henüz çoğu ekip için yeterli olmayabilir, ancak yaklaşıyor
- Yeni
not-*variant’ı CSS:not()pseudo-class’ını destekler- Örn:
not-hover:opacity-75 - Media query ve
@supportsquery’leri de olumsuzlanabilir
- Örn:
- v4.0’da şu utility ve variant’lar da eklendi
inset-shadow-*,inset-ring-*: Tek bir öğede en fazla 4 box shadow katmanı üst üste bindirilebilirfield-sizing: JavaScript olmadan textarea’nın otomatik boyutlandırılmasını desteklercolor-scheme: Dark mode’da açık renk scrollbar’ı kaldırabilirfont-stretch: Farklı genişlikleri destekleyen variable font’ları ayarlarinert:inertözelliğiyle işaretlenmiş etkileşimsiz öğeleri stillendirirnth-*: nth ailesi stillendirmeyi desteklerin-*:groupsınıfı olmadangroup-*benzeri çalışır:popover-open: Mevcutopenvariant’ı ile açık popover’ları da hedefler- descendant variant: Tüm alt öğeleri stillendirir
Başlama ve yükseltme yolu
- Yeni projelerde kurulum dokümantasyonunu izleyerek Tailwind CSS v4.0 kullanılabilir
- Tarayıcıda hemen denemek için Tailwind Play kullanılabilir
- Mevcut projeler için yükseltme rehberi ve otomatik yükseltme aracı sunuluyor
1 yorum
Hacker News yorumları
Bir zamanlar Tailwind’in çeşitli kusurlarını ve modern “saf” web yaklaşımlarıyla fiili uyumsuzluğunu sert biçimde eleştirmiştim, ancak v4’teki büyük ilerleme çok sevindirici
Tailwind temasına yerel CSS değişkenleri olarak erişilebilmesi ve dokümantasyonda harici bir stil sayfasında yerel değişkenlerle yazılmış bir düğme bileşeni örneğinin bile bulunması muazzam bir değişim
Yalnızca CSS ile yapılandırılabilmesi de harika; artık Tailwind, makul mimarileri yutan JavaScript tarzı “viral” bir framework değil, herhangi bir projeye eklenebilecek bir utility gibi hissettiriyor
Son birkaç yıldaki eleştiriler etkili olduysa da, kendileri iyi bir sonuca ulaştıysa da, Tailwind lehine/aleyhine tartışmaların önemli bir kısmı artık daha az ilgili görünüyor; bu çok iyi bir şey. Artık ürün geliştirmeye odaklanabiliriz
Her şeyi sistematik biçimde ifade edebildiği için gerçekten iyi çalışıyor ve bunda son derece yararlı bir şey var
Birincisi, JavaScript/Tailwind mühendisleri tasarım tartışmalarını ele geçirdi. “Utility-first”, “kullanılmayan kodu kaldırma”, “tip güvenli CSS” yerine tasarım sistemlerine; örneğin tipografide Perfect Fifth mi yoksa Perfect Fourth mü kullanılacağı gibi konulara daha fazla odaklanıyorum
İkincisi, Tailwind gerçek üretim sürecine katılmayı zorlaştırıyor. Tasarım kararları
flex items-center shadow-lg p-6 hover:bg-gray-50 dark:bg-gray-800 py-[calc(theme(spacing[2.5])-1px)]gibi anlaşılması güç React bileşeni ifadelerinin içine gömülüyorJavaScript mühendisi için anlaşılabilir olabilir, ancak sistematik tasarım için bir engel oluşturuyor. CSS ile hassas matematiksel ilişkiler ifade etmek yerine, daha kolay olan inline style kullanılmış oluyor
CSS eskisine göre çok daha kolay kullanılır hale geldi ve çoğu tarayıcı da artık tutarlı davranıyor
Build adımı gerektirmediği ve markup’ı aşırı kodla kirletmediği için öğrenmeye değer
HTML içinde doğrudan
styleözniteliğini de kullanabilirsiniz; eskiden ilgi alanlarının ayrılması için bundan kaçınılırdı. Bu yüzden benzer bir yaklaşımı neden yeniden getirmek istediklerini merak ediyorum. Sanki sadece birkaç karakter azaltmak içinmiş gibi geliyorstyleözniteliği, kodu kafanızda dönüştürmenizi de gerektirmediğinden aksine daha sezgisel görünüyor. Cazibesini pek anlayamıyorumstyleözniteliğiyle yapılamayan epey şey var. Örneğin sözde sınıflar:hover,:focus, sözde öğeler::before,::after, medya sorguları, keyframe’ler ve animasyonlarBüyük projelerde geliştirici deneyimi de iyi değil
Öte yandan yakında standart olacak
@scope, stilleri yakın bir yere yerleştirmek için iyi bir ek özellik: https://developer.mozilla.org/en-US/docs/Web/CSS/@scopeBileşen soyutlaması, anlam ile stili daha güçlü biçimde ayırır. Her iki durumda da “hero” soyutlamasını bulmanız gerekir, ancak bileşen dünyasında yalnızca stil değil, HTML etiket adı bile soyutlanır
Her iki şekilde de “stil ayrıntıları”, sayfa kaynak dosyası olan “içerikten” ayrılmıştır. İlgi alanlarının ayrılması, yani içerik ile sunumun daha iyi ayrılması için build adımına katlanılabilir
Ayrı dosyalar yönetme ve kullanılmayan bileşenleri kaldırma ihtiyacı da azalıyor
styleetiketiyle yapılamayan medya sorgularını kullanabiliyorsunuz ve başka yerlerde kullanılan sınıfları bozma riskiniz de olmuyor. CSS’in global scope’u avantajlı olsa da risklidirStillerin tasarım sistemine değil, bileşenlere ait olduğu düşünülüyor. JavaScript öncelikli mühendislik ekosisteminin, modern CSS’in ve sistematik tasarımın gücünü bilen tasarım odaklı şirketlere daha çok ihtiyacı var
Klasik
.cssyaklaşımı garip adlar, tekrarlar ve çakışma olasılığı doğuruyor.css modulesda bir seçenek olabilir, ama bileşen/sayfa başına dosya sayısını fiilen ikiye katlıyorsassveyaless,css modulesile klasik.cssyaklaşımının sorunlarını bir araya getiriyormuş gibi hissettiriyorTailwind’i özünde seviyor ya da sevmiyor değilim; başta ondan hiç hoşlanmamıştım, ancak bileşenler ve sayfalardan oluşan 200’den fazla dosyalı bir projede değerini hissediyorum
Tailwind’e ilk tepkim “uğraştırıcı” olduğuydu. CSS’i zaten biliyordum; şimdi CSS’i yeniden öğrenmem gerekiyormuş gibi hissettirdi.
Bu, bir ebeveynin çocuğuna matematik ödevinde yardım etmeye çalışırken okulda öğretilen yöntemin eskisinden tamamen farklı olduğunu görmesine benziyor: kendi çözüm yöntemi hâlâ doğru ama kabul görmüyor, çocuk da iki sistemi bağdaştırmaya çalışırken sinirleniyor.
Ekipte iyi çalıştığı ve iyi ölçeklendiği için “kullanmak gerek” havasını anlıyorum, bunu deneyimledim de.
Yine de sınıfları veya etiketleri hedefleyen sıradan stil sayfalarını hâlâ daha çok seviyorum. Özellikle CSS artık iç içe seçicileri desteklediği için bu daha da geçerli.
Stil sayfası yönetimi sorunu var; Remix/React Router’daki gibi rota düzeyinde CSS dosyaları tanımlayıp uygulama yaklaşımını seviyorum. Bu yetmezse veya dinamik stiller
.cssdosyasında fazla karmaşık hâle gelirsestyle={{...}}de her zaman mümkün.CSS güçlü, esnek ve ölçeklenebilir; bu yüzden Tailwind bir iyileştirme değil, bir kısıtlama gibi geliyor. Neden bu kadar popüler kalmaya devam ettiğini pek bilmiyorum ama 3-4 yıl sonra herkesin yine başka bir şeye geçmiş olacağını düşünüyorum.
Ama Tailwind kullanan açık kaynak projelere katkı verdikçe alıştım ve şimdi farklı hissediyorum.
Tailwind özünde
style={{…}}için bir kestirme yazım gibi..cssdosyasıyla veya stil nesnesiyle birkaç satır gerektiren şeyi tek bir utility yaklaşık 15 karakterle bitiriyor.“visual text replacement css” gibi şeyler arama ya da CSS cheat sheet’lerine, 8 yıl önceki CSS-Tricks yazılarına bakma sürem ciddi ölçüde azaldı. Bunun yerine sürekli Tailwind dokümantasyonuna bakıp istediğim işi yapan utility class’ı hızla buluyorum.
Şaşırtıcı derecede çok şey zihinsel önbelleğe yerleşiyor ve layout işi için gereken tüm CSS’i ezberlemeye çalışmaktan çok daha iyi hissettiriyor.
Ayrı olarak CSS’e dokunmaya gerek kalmıyor; stil, uygulandığı öğenin hemen üzerinde olduğu için ikisini karşılaştırmak gerekmiyor.
Bunu yalnızca
cssözelliğiyle yapmak da mümkün aslında; ama sorun şu ki herkes bunun yanlış yöntem olduğunu öğrenerek geldi. Ayrıca birden çok utility içeren bir string listesi, saf CSS nesnesi kullanmaktan daha kolay olabiliyor.Devasa ve karmaşık bir sistemin üzerine konmuş birleştirilebilir, standartlaştırılmış modüler bir sarmalayıcı olduğu için büyük bir ilerleme.
Buna karşılık sosyal medyada çarpma ile bölmeyi birbirine karıştırıp tek bir doğru cevap var diyen gönderiler var. Tailwind o kadar kötü değil ama yaşlı biri olarak bana o yöne daha yakın görünüyor.
Tailwind’i seviyorum. Son 4 yılda 3 projede kullandım; sezgiseldi, dokümantasyonu iyiydi ve basitti.
Projedeki stillenmiş her
diviçin isim vermek zorunda olduğumuz emotion ve styled-components günlerini özlemiyorum.Tailwind’de container sadece bir
divve birkaç class’tan ibaret. İsimlendirme tartışmaları azalıyor; isim bulmaya harcanan zihinsel enerji ve inceleme zamanı da azalıyor.diviçin isim düşünmek gerektiği sorununun sıkça dile getirilmesine biraz şaşırıyorum.Bir şeye isim verirken 1 saniyeden fazla düşündüğümü neredeyse hiç hatırlamıyorum. Gerçekten bazı insanlar için takıldıkları nokta bu mu? Hakikaten orada kilitlenme yaratacak kadar mı merak ediyorum.
Benim karşılaştığım kişiler mümkün olan her ayrıntıyı durmadan belirtirdi. Web formunu kendi kişisel HGTV tadilatları gibi ele alırlardı.
Tailwind’i bir kez denediğimde class’lar markup’tan en az bir basamak daha fazla hâle geldi ve kısa sürede okunması zorlaştı.
Şu anda CSS-in-JS iş akışından memnunum. LLM yardımıyla eski usul CSS yazma yöntemi. LLM’e bir görsel gösterip bileşen istediğinizde uygun isimler verilmiş hâlde doğrudan çıkıyor.
React’te styling pek iyi değil; Tailwind kullansanız bile sadece nispeten daha az kötü bir seçenek.
Bir frontend framework’ü ve build adımı kullanacaksanız, kullanım amacına göre Svelte ve Astro iyi. Sıradan CSS ile stil verebilirsiniz; bileşenleri küçük tutarsanız class isimlerini neredeyse hiç kullanmanız gerekmez.
Öğeler için seçici kullanıp framework’ün build sırasında stilleri scope’lamasını sağlayabilirsiniz.
Kendi sitemde Tailwind’i denedim ve oldukça sevdim; ama nedeni yaygın söylenenlerden biraz farklı olabilir.
Tailwind’in gerçek değeri, bir öğeyi etkileyen tüm stilleri tek bir yerde okuyabilmek.
Class isimleri uzayabilir ama tarayıcı geliştirici araçlarını her seferinde açmaktan veya bir ya da daha fazla stil sayfasında aşağı yukarı dolaşmaktan uzun tek bir satırı okumak çok daha hızlı.
Sonradan o koda döndüğümde başka bir öğeyi değiştireceğim diye endişelenmeden güvenle düzenleme yapabiliyorum.
CSS’in cascade yapısı hâlâ yararlı, ama genelde stili tek bir öğeyle sınırlamak istiyorum. Geri kalanında CSS’e dönüyorum; fakat gerçekte yazdığım CSS çok az. Çünkü çoğu zaman sadece boşlukları ayarlamak istiyorum.
“X’i nasıl yaparım?” sorusunun 30 dakikalık bir araştırma işine değil, hızlı bir dokümantasyon aramasına dönüşmesi de hoşuma gidiyor.
Bu HN yazısındaki Tailwind parçaları bunlarla karşılaştırınca epey korkutucu görünüyor.
Bir
divetext-xleklediğinizde ve içinde iç içe geçmişdivilespanvarsa hepsitext-xl’ı miras alır; bu yüzden iç içe öğelerdetext-xl’a neyin yol açtığını görmek için sonunda yine öğe hiyerarşisinde yukarı çıkmanız gerekir.Yine de genel olarak biraz daha kolay.
“Derleme süresinin kısalması”, “artık
@tailwindyönergesi yok”, “JavaScript yapılandırması yok”, “modern web için tasarlandı” gibi ifadeler kulağa şöyle geliyor:CSS artık bizim elle yaptığımız her şeyi yapabiliyor, ama yine de bize hâlâ ihtiyaç varmış gibi davranmaya devam edelim havası var
styleözniteliğinden daha az zahmetli ve optimize etmesi çok daha kolay”dıTailwind neredeyse CSS ile bire bir eşleşmiyor mu?
Tailwind’i sevmemenizi anlarım, ama saman adam kurup saldırmak yerine Tailwind’in hangi yönünü sevmediğinizi söylemek daha iyi olur bence
Başkasının açık kaynak projesini ve onu faydalı bulan insanları küçümsemek de hoş değil
CSS’i iyi bilenlere sormak istiyorum. Ben pek bilmiyorum
Kişisel Phoenix projemi 1.7’ye yükseltiyorum ve Phoenix artık varsayılan olarak Tailwind kullandığı için Bootstrap yerine onu denemek istedim
Şimdiye kadar Bootstrap sürümü “fena değil” görünüyordu, ama Tailwind sürümü darmadağın görünüyor
Tasarımcı olmaya çalışmadan iyi görünen varsayılanlar elde etmenin en kolay yolu nedir? Yoksa sadece Bootstrap’i geri kurup geçmeli miyim?
Tailwind, tasarımı kontrol etmek istediğinizde size araçlar verir, ama sonuçta tasarımı sizin kontrol etmeniz gerekir
Sadece güzel görünsün ve Bootstrap hissi versin diyorsanız doğru seçenek Bootstrap’tir
Teoride Tailwind’in üstünde Bootstrap’i yeniden uygulayan projeler var; Bootstrap benzeri bir başlangıç noktasıyla Tailwind’in gücünü birlikte verebilirler. Ama pratikte sadece Bootstrap kullanmaktan daha iyi çalıştığını görmedim
DaisyUI dokümanları burada: https://daisyui.com
Tailwind’in ücretli bileşenleri de var; sadece kopyalayıp yapıştırıyorsunuz. Alışınca Flowbite bileşenlerini yavaş yavaş değiştirebilmek güzel
İş güvenceniz varsa ve bir şeyleri kurcalamak istiyorsanız Tailwind ile oynayabilirsiniz. Trendlere duyarlı ve sesi çok çıkan insanlar genelde Tailwind’i seviyor gibi
Ama kendi projenizse, kendi paranızla yapıyorsanız ya da bir son teslim tarihiniz varsa, zaten bildiğiniz Bootstrap’i kullanıp UI üzerinde yıpratma savaşına girmek yerine işi bitirmeye odaklanmanız daha iyi
Tailwind, bileşenler oluşturmak için üst üste koymanız gereken sınıfları sağlar
UI bileşen kaynaklarıyla birlikte kullanırsanız daha kolay olur. Eskiden TailwindUI kullanmıştım ama ücretliydi; iyi ücretsiz alternatifler de vardır muhtemelen
“Tailwind mi değil mi” sohbetlerinde net bir kalıp var. Tailwind her anıldığında tekrarlanıyor
30 dakikadan fazla doğru düzgün kullanmamış, kısa bir deneme yapmış ya da sadece dokümanlara göz atmış insanlar var. Bunlar Tailwind’den hoşlanmıyor ve “saf CSS” gibi şeyleri tercih ediyor
Öte yandan gerçek projelerde, birden fazla kişiden oluşan ekiplerde kullanmış insanlar var. Bunlar değerini anlıyor, ödünleşimleri kabul ediyor ve seviyor
Birinci gruptan ikinci gruba geçen çok kişi gördüm, ama ikinciden birinciye dönen neredeyse hiç görmedim
Tailwind’in başarılı olmasının nedeni bu. Saflık yanlılarının gözünde güzel olmayabilir, ama bir şeyler inşa edenlerin ve pragmatistlerin gözünde gerçekten harika
Tailwind’e karşı değilim, ama henüz kullanmamış olmamın nedeni Web Components veya React Styled Components gibi diğer seçeneklerden neden daha iyi bir yaklaşım olduğunu pek görememem
En büyük sorun, Tailwind’in HTML’i çok sayıda utility class ile kalabalıklaştırıp okunmasını ve bakımını zorlaştırması
Devasa bir global CSS dosyasından ve klasik etiket adına dayalı CSS’ten daha iyi olduğunu biliyorum, ama bileşene scoped CSS’i global ad alanını kirletmeden kullanmanın yolları zaten var. Web Components ve Styled Components bunun örnekleri
İkisi de stilleri doğrudan bileşene, daha genel olarak belirli bir HTML etiketi grubuna bağlar; böylece hangi stilin nereye uygulandığını görmek kolaylaşır
Global class adlarına da gerek kalmaz; istenmeyen yan etkiler veya çakışmalar konusunda endişe de azalır. Bir bileşeni kaldırınca ilgili stiller de birlikte kaldırılır, bu yüzden kullanılmayan CSS’in kalması konusunda endişelenmeniz gerekmez. Shadow DOM sayesinde bir bileşenin stilinin başka bir bileşeni istemeden etkileme riski de yoktur
Sunuma yönelik stilleri doğrudan markup’a karıştırmadan HTML’i kısa ve okunabilir tutmayı önemsiyorum. Tailwind’de olduğu gibi tüm stiller
classözniteliğine girince tek satırda uzun class listeleri oluşuyor; gerçek class adlarını da birlikte yazmak gerekiyorsa HTML dağınık hale geliyorHangi stillerin uygulandığını bir bakışta anlamak zorlaşıyor, düzgün girintilemek de güçleşiyor. Eskiden HTML’deki inline
styleözniteliğinden uzaklaşmamızın birçok nedenini hatırlatıyorTailwind’den nefret etmiyorum, ama okunabilirlik, bakım yapılabilirlik ve ilgilerin ayrılması açısından Web Components veya Styled Components’a göre net bir üstünlüğünü göremiyorum; hâlâ yanıtlanmamış ciddi endişelerim var
Dokümanları okudum ama kullanmadım; diğer seçenekler yerine neden Tailwind’i seçeceğimi anlamakta zorlanıyorum. Sıradan HTML’in ortasında aşırı fazla class olması, benim için ikisini de okumayı zorlaştırıyor
Tailwind’i faydalı şekilde kullanan ve üretken olan insanlar olduğunu kabul ediyorum, ancak Tailwind artık her yerde olduğu için temiz ama sıradan görünen bir görünüm her yerde karşımıza çıkıyor
Genel olarak Tailwind, stiller üzerinde normal CSS’ten daha büyük bir etki yaratmaz. Birkaç istisna var. Gölge gibi şeyler biraz daha standartlaşmış durumda; indigo renk paleti de son dönemde dışarıyı bir miktar etkiledi
İnsanlar sadece siteleri belirli bir şekilde tasarlamaya eğilimli. Özellikle ShadCn ile birlikte kullanıldığında böyle
Bunu, web sitesi yazı tipi olarak Inter’in yeni Helvetica gibi kullanılmasına benzetiyorum. Çok kişi kullanıyorsa ve iyi görünüyorsa, kullanmamak için neden olsun ki?
Bootstrap, Tailwind’den çok daha önce çok sayıda utility class sunarak epey zaman kazandırıyordu ve belirli bir görünümü dayatmıyordu
İstediğiniz sınıfları çağırmanız yeterliydi. Elbette Sass kaynak dosyalarını indirmediyseniz durum farklı, ama bu aptalca bir tercih olurdu
Bu yüzden projelerin büyük çoğunluğu çok az sayıdaki framework’ü kullanıyor. Kaliteli 4-5 UI projesi daha ortaya çıksa, özellikle stil yönleri daha farklı olsa, çeşitlilik artar
Tasarım da birçok yaratıcı iş gibi, şaşırtıcı derecede az sayıda insanın akışı belirlediği bir alan gibi görünüyor
Keşke daha çok insan bunun farkında olsa. Yetenekli insanların “Ben yapsam da kimse dinlemez” diye düşünüp üretmediği durumlar olabilir
Ama bu insanların bir kısmı denese, web’in büyük bir bölümüne yeni UI’lar açabileceklerini düşünüyorum
Tailwind, inline style’ların avantajlarının; yani bir şeyi adlandırmadan stillendirmenin, string’lerin evrenselliğinin ve string’lerin sınırlarının bir kanıtı
Bundan sonra gelecek şeyi merakla bekliyorum; o zamana kadar da gönülsüzce Tailwind kullanacağım