Tailwind CSS là framework CSS theo hướng utility-first: thay vì viết CSS riêng hay dùng thành phần có sẵn, bạn ghép các lớp tiện ích nhỏ (p-4, text-lg, bg-green-600) ngay trong HTML. Bài này giải thích triết lý, ưu nhược điểm và so sánh với CSS thuần, Bootstrap.
- Hiểu khái niệm utility-first
- So sánh Tailwind với CSS thuần và Bootstrap
- Đọc hiểu một đoạn giao diện viết bằng Tailwind
- Biết các điểm mới của Tailwind CSS v4
- Utility class
- Lớp làm đúng một việc: p-4 = padding 1rem.
- Design token
- Thang giá trị dùng chung: màu, khoảng cách, cỡ chữ.
- Variant
- Tiền tố điều kiện: hover:, md:, dark:.
Một số khái niệm
Với CSS thuần bạn phải đặt tên class (.the-khoa-hoc) rồi viết CSS ở tệp khác; với Bootstrap bạn dùng thành phần dựng sẵn (.card). Tailwind cho bạn các viên gạch nhỏ theo một hệ thống thiết kế thống nhất (khoảng cách bội số 0.25rem, bảng màu 50–950, cỡ chữ xs–9xl) để tự ghép bất kỳ giao diện nào mà không rời HTML. Công cụ chỉ sinh ra CSS cho những lớp bạn thực sự dùng nên tệp CSS rất nhỏ.
Tailwind CSS v4 (2025, hiện là 4.x) viết lại hoàn toàn: engine Oxide nhanh hơn nhiều lần, cấu hình ngay trong CSS bằng @theme thay cho tailwind.config.js, chỉ cần một dòng @import "tailwindcss";, tự dò tệp nguồn, dùng tính năng CSS hiện đại (cascade layers, biến CSS, color-mix, container query).
So sánh ba cách viết cùng một nút
<!-- CSS thuần -->
<button class="nut">Đăng ký</button>
<style>.nut { padding: .5rem 1rem; background: #16a34a; color: #fff; border-radius: .5rem; font-weight: 600; }
.nut:hover { background: #15803d; }</style>
<!-- Bootstrap -->
<button class="btn btn-success">Đăng ký</button>
<!-- Tailwind CSS -->
<button class="px-4 py-2 bg-green-600 hover:bg-green-700 text-white rounded-lg font-semibold">Đăng ký</button><div class="flex flex-wrap gap-3 items-center">
<button class="px-4 py-2 bg-green-600 hover:bg-green-700 text-white rounded-lg font-semibold">Đăng ký</button>
<button class="px-4 py-2 border-2 border-sky-600 text-sky-700 rounded-full hover:bg-sky-50">Xem thêm</button>
<span class="inline-flex items-center gap-1 rounded-md bg-amber-100 px-2 py-1 text-xs font-medium text-amber-800">Mới</span>
</div>Ưu và nhược điểm
| Ưu điểm | Nhược điểm |
|---|---|
| Không phải nghĩ tên class, không chuyển qua lại giữa tệp | HTML dài, nhiều lớp |
| Thiết kế nhất quán nhờ thang giá trị chung | Cần thời gian làm quen tên lớp |
| CSS đầu ra rất nhỏ, không bị phình theo thời gian | Không có thành phần JS sẵn như Bootstrap |
| Responsive, trạng thái, chế độ tối ngay trong class | Lặp lớp nếu không tách thành phần (component) |
Vấn đề “HTML dài” được giải quyết bằng cách tách thành phần trong framework (React, Vue, Blade, PHP include) hoặc bằng vòng lặp, nên Tailwind đặc biệt hợp với React/Next.js.
Đọc một thẻ giao diện
<div class="max-w-sm rounded-2xl bg-white p-5 shadow-lg ring-1 ring-slate-200">
<div class="flex items-center gap-3">
<div class="grid size-12 place-items-center rounded-xl bg-green-100 text-xl font-bold text-green-700">TW</div>
<div><h3 class="font-semibold text-slate-900">Tailwind CSS</h3><p class="text-sm text-slate-500">12 bài · Cơ bản đến nâng cao</p></div>
</div>
<p class="mt-4 text-slate-600">Thiết kế giao diện bằng lớp tiện ích, nhanh và nhất quán.</p>
<a href="#" class="mt-4 inline-block rounded-lg bg-slate-900 px-4 py-2 text-sm font-medium text-white hover:bg-slate-700">Học ngay →</a>
</div>Đọc lớp như đọc câu: max-w-sm chiều rộng tối đa nhỏ, rounded-2xl bo góc lớn, p-5 padding 1.25rem, shadow-lg bóng lớn, ring-1 viền mảnh, size-12 rộng cao 3rem.
Cài tiện ích Tailwind CSS IntelliSense cho VS Code: gợi ý tên lớp, xem CSS tương ứng khi rê chuột, cảnh báo lớp xung đột.
Tailwind không thay thế việc hiểu CSS; mỗi lớp tương ứng một thuộc tính CSS. Học trước loạt CSS (ít nhất bài 1–15) sẽ giúp bạn dùng Tailwind hiệu quả hơn nhiều.
- Viết lại một nút và một thẻ từ bài CSS bằng lớp Tailwind.
- Mở tailwindcss.com/docs, tìm lớp tương ứng của 5 thuộc tính CSS bạn hay dùng.
- Đọc và giải thích từng lớp trong ví dụ thẻ ở trên.
- Utility-first: ghép lớp nhỏ ngay trong HTML.
- Hệ thống thiết kế thống nhất, CSS đầu ra nhỏ.
- v4: cấu hình bằng CSS (@theme), engine Oxide, @import "tailwindcss".
- Rất hợp với framework thành phần như React, Next.js.