Tailwind CSS — бу сўнгги йилларда фронтенд дастурчилар орасида тезда оммалашган utility-first (утилитар-биринчи) CSS фреймворк. Анъанавий ёндашувда биз алоҳида CSS файл очиб, у ерда класс номлари ўйлаб топамиз ва селекторлар ёзамиз, кейин эса уларни HTML элементларига улаймиз. Tailwind эса бу жараённи бутунлай ўзгартиради: у сизга олдиндан тайёрланган минглаб кичик ёрдамчи класслар тўпламини беради ва сиз услублашни тўғридан-тўғри HTML markup ичида, класслар орқали бажарасиз. Натижада сиз дизайнни кўриб турган жойингизнинг ўзида ясайсиз ва алоҳида файллар ўртасида сакраб юришингизга ҳожат қолмайди.
Utility-first ёндашув аслида нима дегани
Utility-first фалсафасининг моҳияти шундаки, ҳар бир класс фақат битта ёки бир нечта аниқ CSS хусусиятини ифодалайди. Масалан, p-4 класси элементга ички бўшлиқ (padding) қўшади, text-center матнни марказга текислайди, flex эса элементни flexbox контейнерига айлантиради. Сиз бу кичик «ғиштчалар»ни HTML'да бирлаштириб, мураккаб дизайнларни қуряпсиз. Бу Bootstrap каби компонентга асосланган кутубхоналардан тубдан фарқ қилади, чунки Bootstrap сизга тайёр «card», «navbar», «button» компонентларини беради, Tailwind эса сизга шу компонентларни ўзингиз хоҳлагандек қуриш учун атомик воситаларни тақдим этади.
Қуйидаги мисолда анъанавий CSS билан Tailwind ўртасидаги фарқни кўришингиз мумкин. Анъанавий усулда биз алоҳида класс номи ўйлаб топиб, уни CSS файлга ёзамиз, Tailwind'да эса ҳаммаси бир жойда туради:
<!-- An'anaviy CSS yondashuvi -->
<button class="btn-primary">Yuborish</button>
/* style.css faylida alohida */
.btn-primary {
padding: 0.5rem 1rem;
background-color: #2563eb;
color: white;
border-radius: 0.375rem;
}
<!-- Tailwind yondashuvi -->
<button class="px-4 py-2 bg-blue-600 text-white rounded-md">
Yuborish
</button>
Энг кўп ишлатиладиган асосий класслар
Tailwind билан ишни бошлаш учун бир нечта асосий класс гуруҳларини билиш кифоя. Жойлашув (layout) учун flex, grid, block каби класслар, бўшлиқлар учун p-* (padding) ва m-* (margin), ўлчамлар учун w-* ва h-* ишлатилади. Матн билан ишлашда text-lg, font-bold, text-gray-700 каби класслар, ранглар учун эса bg-* (фон ранги) класслари қўл келади. Энг муҳими, бу классларнинг барчаси изчил масштаблаш тизимига эга: p-1 кичик бўшлиқ, p-8 эса каттароқ бўшлиқ беради, шунинг учун дизайнингиз ҳар доим мутаносиб бўлиб қолади.
<div class="flex items-center justify-between p-6 bg-white rounded-lg shadow">
<h3 class="text-xl font-bold text-gray-800">Mahsulot nomi</h3>
<span class="text-green-600 font-semibold">120 000 so'm</span>
</div>
Responsive дизайн ва ҳолатлар
Tailwind'нинг энг кучли томонларидан бири унинг респонсив (мослашувчан) дизайн тизими ва ҳолат модификаторларидир. Экран ўлчамига қараб услубни ўзгартириш учун класс олдига md:, lg: каби префикслар қўшасиз. Масалан, flex-col md:flex-row дегани: кичик экранларда элементлар устун бўлиб жойлашади, ўрта ва катта экранларда эса қатор бўлиб терилади. Худди шундай, фойдаланувчи сичқончани элемент устига олиб келганда услуб ўзгариши учун hover: префиксини ишлатасиз. Бу ёндашув мобил-биринчи (mobile-first) принсипга асослангани учун сиз аввал кичик экран учун ёзасиз, кейин катталаштириб борасиз.
<div class="flex flex-col md:flex-row gap-4">
<button class="bg-blue-600 hover:bg-blue-700 text-white px-4 py-2 rounded
transition focus:ring-2 focus:ring-blue-400">
Saqlash
</button>
</div>
Созлаш, JIT ва нега бу тез ишлайди
Tailwind лойиҳангизга tailwind.config.js файли орқали созланади ва айнан шу ерда сиз ўз рангларингиз, шрифтларингиз ва масштаб қийматларингизни қўшиб, фреймворкни брендингизга мослаштирасиз. Замонавий версиялардаги JIT (Just-In-Time) компилятори эса фақат сиз ҳақиқатан ишлатган классларнигина якуний CSS файлга киритади, шу сабабли чиқадиган файл жуда кичик бўлади ва сайт тез юкланади. Ишлаб чиқиш жараёнининг тезлиги эса контекст алмашинуви йўқлигидан келиб чиқади: сиз HTML, CSS файл ва браузер ўртасида сакраб юрмайсиз, балки барча ишни битта жойда, markup ичида бажарасиз, бу эса диққатни сақлаб, ишни тезлаштиради.
Танқидлар ва компонентларга ажратиш
Tailwind'га энг кўп билдириладиган танқид — HTML markup'нинг жуда кўп класслар билан тўлиб кетиши ва ўқиш қийинлашишидир. Битта тугма ёки карточкада ўнлаб класслар йиғилиб қолиши мумкин, бу эса бошида ғалати кўринади. Бироқ бу муаммонинг ечими оддий: такрорланувчи элементларни React, Vue ёки Blade каби компонент тизимлари ёрдамида алоҳида компонентларга ажратасиз, шунда класслар бир марта ёзилади ва кўп марта қайта ишлатилади. Шу тарзда сиз Tailwind'нинг тезлигини сақлаб қоласиз, аммо кодингиз тоза ва бошқариладиган бўлиб туради. Агар сайт ёки онлайн дўкон яратмоқчи бўлсангиз, бундай замонавий фронтенд ёндашувлари sayt.uz хизматлари билан биргаликда тез ва сифатли натижа бериши мумкин.