Tailwind CSS trong React
Tailwind CSS là một framework CSS tiện ích-first (utility-first) giúp bạn xây dựng giao diện nhanh chóng mà không cần viết nhiều CSS tùy chỉnh. Nó kết hợp hoàn hảo với React, giúp việc phát triển giao diện trở nên dễ dàng và hiệu quả.

1. Tailwind CSS là gì?
Tailwind CSS là một CSS framework tập trung vào các class tiện ích (utility classes). Thay vì viết CSS tùy chỉnh, bạn sử dụng các class dựng sẵn để nhanh chóng tạo style cho giao diện.
Đặc điểm chính của Tailwind CSS:
- Utility-first: Sử dụng các class tiện ích thay vì viết CSS riêng.
- Tùy chỉnh cao: Dễ dàng cấu hình và mở rộng qua tệp tailwind.config.js.
- Hiệu suất cao: Tích hợp tree-shaking, loại bỏ class không sử dụng khi build.
- Responsive design: Hỗ trợ thiết kế responsive mạnh mẽ.
2. Cài đặt Tailwind CSS trong React
2.1. Tạo dự án React
Nếu bạn chưa có dự án React, hãy tạo bằng lệnh:
npx create-react-app my-tailwind-app
cd my-tailwind-app
2.2. Cài đặt Tailwind CSS
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init -p
tailwindcss init -p
: Tạo file tailwind.config.js
và postcss.config.js
.
2.3. Cấu hình Tailwind
Mở file tailwind.config.js
và thêm cấu hình sau:
/** @type {import('tailwindcss').Config} */
export default {
content: [
"./src/**/*.{js,jsx,ts,tsx}",
],
theme: {
extend: {},
},
plugins: [],
}
2.4. Thêm Tailwind vào CSS
Mở file src/index.css
và thêm các dòng sau:
@tailwind base;
@tailwind components;
@tailwind utilities;
2.5. Chạy ứng dụng React
npm start
Nếu không có lỗi, bạn đã sẵn sàng sử dụng Tailwind CSS trong React!
3. Sử dụng Tailwind CSS trong React
3.1. Ví dụ cơ bản
function App() {
return (
<div className="flex items-center justify-center min-h-screen bg-gray-100">
<button className="bg-blue-500 hover:bg-blue-700 text-white font-bold py-2 px-4 rounded">
Click Me
</button>
</div>
);
}
export default App;
Giải thích:
-
flex items-center justify-center
: Căn giữa nội dung theo cả hai chiều. -
min-h-screen
: Chiều cao tối thiểu bằng chiều cao màn hình. -
bg-gray-100
: Màu nền xám nhạt. -
bg-blue-500
: Nền xanh dương. -
hover:bg-blue-700
: Thay đổi màu nền khi hover. -
text-white
: Màu chữ trắng.
3.2. Responsive Design với Tailwind CSS
Tailwind CSS hỗ trợ các breakpoint responsive dễ dàng:
function App() {
return (
<div className="p-4 md:p-8 lg:p-16">
<h1 className="text-xl md:text-2xl lg:text-4xl">Responsive Text</h1>
</div>
);
}
Breakpoint phổ biến:
-
sm
: 640px -
md
: 768px -
lg
: 1024px -
xl
: 1280px
3.3. Tùy chỉnh Theme
Bạn có thể tùy chỉnh các giá trị như màu sắc, font-size trong tailwind.config.js
:
theme: {
extend: {
colors: {
primary: '#1E3A8A',
secondary: '#9333EA',
}
}
}
Sử dụng trong component:
function App() {
return (
<button className="bg-primary text-white py-2 px-4 rounded">
Custom Color Button
</button>
);
}
4. Kết hợp Tailwind với CSS Modules hoặc Styled-components
Tailwind có thể kết hợp với CSS Modules hoặc Styled-components để mở rộng khả năng style.
Ví dụ kết hợp Styled-components:
import styled from 'styled-components';
const StyledButton = styled.button`
@apply bg-green-500 text-white py-2 px-4 rounded;
`;
function App() {
return <StyledButton>Styled Button</StyledButton>;
}
5. So sánh Tailwind CSS và Styled-components
Tailwind CSS | Styled-components |
---|---|
Sử dụng class tiện ích | Viết CSS trực tiếp trong JS |
Cấu hình dễ dàng | Linh hoạt với props |
Tree-shaking mạnh mẽ | Kích thước bundle lớn hơn |
Học curve hơi dốc | Dễ làm quen hơn |
6. Ưu và Nhược điểm của Tailwind CSS
Ưu điểm:
- Xây dựng giao diện nhanh chóng với class tiện ích.
- Tối ưu hóa kích thước file CSS với tree-shaking.
- Tùy chỉnh linh hoạt qua tailwind.config.js.
- Hỗ trợ responsive mạnh mẽ.
Nhược điểm:
- Code JSX có thể trở nên dài và khó đọc nếu quá nhiều class.
- Đường cong học tập hơi dốc cho người mới bắt đầu.
- Phụ thuộc nhiều vào tài liệu để nhớ class.
7. Khi nào nên sử dụng Tailwind CSS?
- Dự án yêu cầu phát triển giao diện nhanh chóng.
- Bạn muốn hạn chế viết CSS thủ công.
- Làm việc trên ứng dụng có yêu cầu responsive phức tạp.
- Bạn muốn tối ưu hiệu suất file CSS.
8. Kết luận
Tailwind CSS là một công cụ mạnh mẽ, linh hoạt và hiệu quả cho việc xây dựng giao diện React. Với cách tiếp cận utility-first, bạn có thể tạo giao diện đẹp mắt, dễ bảo trì mà không phải viết quá nhiều CSS tùy chỉnh.

Với hơn 10 năm kinh nghiệm lập trình web và từng làm việc với nhiều framework, ngôn ngữ như PHP, JavaScript, React, jQuery, CSS, HTML, CakePHP, Laravel..., tôi hy vọng những kiến thức được chia sẻ tại đây sẽ hữu ích và thiết thực cho các bạn.
Xem thêm

Chào, tôi là Vũ. Đây là blog hướng dẫn lập trình của tôi.
Liên hệ công việc qua email dưới đây.
lhvuctu@gmail.com