Thông thạo Tailwind CSS: Hướng dẫn thực tế từ cơ bản đến thực hành và các phương pháp hay nhất

Đọc trong 2 phút
2026-03-17
2,080
Tôi kiếm được hoa hồng khi bạn mua sắm thông qua các liên kết dưới đây, mà không phát sinh thêm chi phí nào cho bạn.

Tailwind CSS là gì

Tailwind CSS là một framework CSS tập trung vào tính năng (functionality), giúp các nhà phát triển xây dựng giao diện người dùng tùy chỉnh một cách nhanh chóng bằng cách cung cấp một số lượng lớn các lớp hữu ích (utility classes) có tính chất nguyên tử hóa và được thiết kế riêng cho từng mục đích cụ thể. Khác với các thư viện thành phần truyền thống như Bootstrap, Tailwind không cung cấp sẵn các thành phần như nút bấm, thẻ (cards) được thiết kế sẵn; thay vào đó, nó cung cấp những lớp CSS có thể được sử dụng để tạo ra các thành phần đó một cách linh hoạt. flexpt-4text-centerbg-gray-800 Đây là những công cụ cấp thấp như vậy. Các nhà phát triển có thể xây dựng bất kỳ thiết kế nào bằng cách kết hợp trực tiếp các lớp này với các phần tử HTML, từ đó tạo ra mức độ linh hoạt tùy chỉnh rất cao. Điều này giúp tránh được những xung đột về kiểu dáng và những vấn đề liên quan đến tính đặc thù của các định dạng (specificity) thường gặp trong CSS truy

Triết lý cốt lõi của nó là “tự do trong khuôn khổ các ràng buộc”. Nó cung cấp một hệ thống thiết kế được thiết kế tỉ mỉ, bao gồm các yếu tố như khoảng cách (Spacing), màu sắc (Colors), và bố cục chữ (Typography). Các nhà phát triển có thể làm việc trong hệ thống này để đảm bảo tính nhất quán trong thiết kế, đồng thời không bị hạn chế bởi các thành phần được định nghĩa sẵn. Bằng cách loại bỏ (Purge) các kiểu dáng (styles) không được sử dụng, phiên bản sản phẩm cuối cùng có thể được giảm kích thước đáng kể, giải quyết được vấn đề về việc các tệp CSS truyền thống chứa quá nhiều thành phần không cần thiết và có kích thước quá lớn.

Core Concepts and Basic Syntax

Để sử dụng Tailwind CSS một cách hiệu quả, bạn cần hiểu rõ các nguyên tắc thiết kế cốt lõi và cấu trúc ngôn ngữ cơ bản của nó. Điều này không chỉ đơn thuần là việc ghi nhớ các tên lớp (classes), mà còn là việc nắm bắt cách suy nghĩ khi xây dựng giao diện người dùng bằng công cụ này.

Đọc thêm Học Tailwind CSS: Xây dựng trang web hiện đại và responsive từ con số 0

Logic for Naming Utility Classes

Các tên lớp (class names) trong Tailwind tuân theo một bộ quy tắc đặt tên trực quan và nhất quán. Hầu hết các tên lớp được tạo thành từ một thuộc tính (Property) và một giá trị (Value), được nối với nhau bằng dấu gạch chéo (-). Ví dụ:p-4 biểu thị padding: 1rem;Trong đó p Đó là thuộc tính (padding).4 Đây là giá trị tương ứng với cấp độ thứ 4 trong hệ thống phân loại kích thước (size scale). Tên các lớp màu (color classes) được hiển thị như sau: bg-blue-500bg Đó là phần nền (background).blue Đó là màu sắc (hue).500 Đó là độ sâu (depth). Cách đặt tên này giúp giảm đáng kể chi phí học tập và ghi nhớ.

Trợ lý xây dựng trang web WordPress.com
Trợ lý xây dựng trang web WordPress.com
99.9991% Thời gian hoạt động + Khả năng chịu lỗi đa vùng, hỗ trợ 24/7, mua gói blog được miễn phí sử dụng AI xây dựng website
Miễn phí tên miền trong một năm
Truy cập Trợ lý Xây dựng Website WordPress.com →
Trợ lý Xây dựng Website UltaHost
Trợ lý Xây dựng Website UltaHost
900+ mẫu miễn phí, tùy chỉnh được, có được khả năng SEO cần thiết để tối ưu hóa khả năng hiển thị tìm kiếm của website

Prefix for responsive design

Tailwind ưu tiên thiết kế cho nền tảng di động làm mặc định. Tất cả các lớp (classes) hữu ích đều được thiết kế dành riêng cho màn hình thiết bị di động trước, sau đó mới sử dụng các tiền tố (prefixes) để điều chỉnh giao diện cho các loại màn hình lớn hơn. Định dạng của các tiền tố phản ứng (responsive prefixes) là… {screen}:Ví dụ,text-center md:text-left Điều này có nghĩa là văn bản sẽ được trung tâm trên các thiết bị di động, và trên các màn hình có kích thước trung bình (md) hoặc lớn hơn, văn bản sẽ được căn lề sang trái.

<div class="w-full md:w-1/2 lg:w-1/3">
  <!-- 在移动端宽度100%,中等屏幕宽度50%,大屏幕宽度33.333% -->
</div>

Tiền tố biến thể trạng thái (Status Variant Prefix)

Ngoài khả năng thích ứng với các thiết bị khác nhau (responsive design), Tailwind còn hỗ trợ nhiều trạng thái của các phần tử trang web thông qua việc sử dụng các tiền tố (prefixes), chẳng hạn như trạng thái “hover” (khi người dùng di chuột lên phần tử đó), “focus” (khi phần tử nhận được sự chú ý từ người dùng), “active” (khi phbg-blue-500 hover:bg-blue-700 Một nút với nền màu xanh mặc định sẽ được tạo ra; khi người dùng di chuột lên nút đó, màu nền sẽ chuyển thành màu xanh đậm.

<button class="bg-blue-500 text-white font-bold py-2 px-4 rounded hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-300">
  点击我
</button>

Cấu hình và tùy chỉnh dự án

Mặc dù Tailwind có thể sử dụng ngay lập tức sau khi được cài đặt, sức mạnh thực sự của nó nằm ở tính tùy chỉnh cao. Nhờ vào các tệp cấu hình, các nhà phát triển có thể kiểm soát hoàn toàn hệ thống thiết kế.

Core Configuration File

Việc tùy chỉnh Tailwind chủ yếu được thực hiện thông qua các tệp tin trong thư mục gốc của dự án (project root directory). tailwind.config.js Tệp đã được tạo xong. Trong tệp này, bạn có thể thay đổi các thiết lập về chủ đề (theme), thêm các tiện ích mở rộng (plugins), cấu hình các biến thể (variants), v.v. Ví dụ, bạn có thể mở rộng bảng màu mặc định, thay đổi các đơn vị đo khoảng cách (spacing units), hoặc thay thế các gia đình phông chữ (font families).

Đọc thêm Làm chủ Tailwind CSS: Hướng dẫn thực tế và các phương pháp hay nhất từ cơ bản đến nâng cao

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        'brand-blue': '#1992d4',
      },
      spacing: {
        '72': '18rem',
        '84': '21rem',
      }
    },
  },
  variants: {
    extend: {
      opacity: ['disabled'], // 为 opacity 实用类添加 disabled 状态变体
      backgroundColor: ['active'], // 为背景色添加 active 状态
    },
  },
  plugins: [],
}

Tích hợp với công cụ xây dựng

Tailwind CSS cần được tích hợp vào quy trình xây dựng ứng dụng để tạo ra tệp CSS cuối cùng. Cách phổ biến nhất là sử dụng nó cùng với PostCSS. postcss.config.js tệp, đặt giá trị của hằng số tailwindcssautoprefixer Thêm nó vào danh sách các plugin. Sau đó, trong tệp CSS chính của bạn (ví dụ:…) styles.cssapp.css)sử dụng @tailwind Các lệnh được sử dụng để đưa các thành phần (components) của Tailwind vào từng tầng (layer) cụ thể của ứng dụng.

/* 主 CSS 文件,例如:src/styles.css */
@tailwind base; /* 注入基础样式(重置浏览器默认样式等) */
@tailwind components; /* 注入组件类(如果你使用了 @apply 或插件) */
@tailwind utilities; /* 注入所有实用类 */

Khi thực hiện quá trình xây dựng sản phẩm (production build), hãy nhớ bật tính năng này (enable the feature) nhé. purge Tùy chọn (trong Tailwind CSS phiên bản 2.1 và các phiên bản mới hơn, tùy chọn này có tên là…) contentĐiều này nhằm loại bỏ tất cả các kiểu dáng (styles) không được sử dụng, từ đó giúp giảm đáng kể kích thước của tệp tin.

Chế độ nâng cao và các thực hành tốt nhất

Khi quy mô dự án tăng lên, việc tuân theo một số thực hành tốt nhất (best practices) có thể giúp duy trì tính dễ bảo trì và hiệu suất của mã nguồn.

Trợ lý xây dựng trang web Bluehost
Cung cấp công cụ tạo website AI, hỗ trợ trò chuyện trực tuyến và điện thoại 24/7, tên miền miễn phí một năm, CDN miễn phí, thời gian hoạt động SLA 99.99%

Trích xuất thành phần và sử dụng @apply

Mặc dù việc kết hợp các lớp hữu ích trực tiếp trong HTML rất mạnh mẽ, nhưng việc lặp lại các cấu trúc lớp sẽ làm giảm độ dễ đọc và khả năng bảo trì mã nguồn. Tailwind cung cấp công cụ để giúp giải quyết vấn đề này. @apply Lệnh này cho phép bạn trích xuất các lớp hữu ích thường được sử dụng trong CSS thành các lớp thành phần (component classes) tùy chỉnh.

/* 在你的 CSS 文件中 */
.btn-primary {
  @apply py-2 px-4 bg-blue-500 text-white font-semibold rounded-lg shadow-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-400 focus:ring-opacity-75;
}
<!-- 在 HTML 中 -->
<button class="btn-primary">保存</button>

Lưu ý rằng việc sử dụng quá mức có thể dẫn đến những hậu quả không mong muốn. @apply Chúng ta có thể sẽ phải quay trở lại cách viết CSS truyền thống, và điều đó sẽ khiến một số lớp CSS hữu ích mất đi tính trực quan (khó sử dụng hơn). Tôi khuyên nên chỉ sử dụng các lớp CSS này cho những kiểu thiết kế được lặp lại nhiều lần trong dự án và có tính ổn định

Xử lý tên lớp động

Trong các framework front-end như React, Vue, việc thêm tên lớp (class name) một cách có điều kiện là rất phổ biến. Để đảm bảo tính rõ ràng và tránh sai sót, bạn nên sử dụng các hàm công cụ đáng tin cậy để kết hợp các tên lớp lại với nhau. Một lựa chọn phổ biến là… clsxclassnames Thư viện.

Đọc thêm Hướng dẫn nhập môn cuối cùng về Tailwind CSS: Xây dựng giao diện người dùng hiện đại, đáp ứng từ con số không

// 在 React 组件中
import clsx from 'clsx';

function Button({ isActive, children }) {
  const buttonClasses = clsx(
    'px-4 py-2 rounded font-medium',
    {
      'bg-blue-500 text-white': isActive,
      'bg-gray-200 text-gray-800': !isActive,
      'hover:bg-blue-600': isActive,
      'hover:bg-gray-300': !isActive,
    }
  );

return <button className={buttonClasses}>{children}</button>;
}

Chiến lược tối ưu hóa hiệu suất

Tối ưu hóa hiệu suất trước hết tập trung vào kích thước tệp CSS cuối cùng. Đảm bảo trong tailwind.config.js Cấu hình đã được thực hiện đúng cách. content Hãy chọn tùy chọn để quét tất cả các tệp mẫu chứa tên lớp. Tránh việc xây dựng tên lớp một cách động trong chuỗi JavaScript, vì quá trình xử lý (Purge) là tĩnh và có thể không nhận diện được những tên lớp đó. Đối với các kiểu dáng cần thay đổi hoàn toàn một cách động (chẳng hạn như màu sắc do người dùng tự định), nên sử dụng kiểu dáng nội tuyến (inline styles) hoặc thuộc tính tùy chỉnh của CSS (CSS Variables), thay vì các lớp trong thư viện Tailwind.

Tóm lại

Tailwind CSS mang lại sự cải thiện đáng kể về hiệu suất và tính nhất quán trong thiết kế cho phát triển front-end nhờ vào phương pháp luận sử dụng các lớp (classes) có tính ứng dụng cao. Nó yêu cầu các nhà phát triển chuyển từ việc “viết mã CSS truyền thống” sang việc “kết hợp các tên lớp” (combining class names) để tạo ra giao diện. Sự thay đổi này có thể gây khó khăn trong giai đoạn đầu, nhưng một khi đã nắm vững, bạn sẽ có thể xây dựng các giao diện có khả năng thích ứng tốt với nhiều thiết bị và được tùy chỉnh một cách chuyên sâu với tốc độ chưa từng có. Những yếu tố then chốt để sử dụng Tailwind CSS thành công bao gồm: hiểu sâu về hệ thống đặt tên của nó, các tiền tố liên quan đến tính thích ứng và trạng thái (responsiveness/status prefixes), tận dụng tối đa các tệp cấu hình (configuration files) để tùy chỉnh hệ thống thiết kế, và áp dụng chúng một cách thông minh khi dự án ngày càng phát triển. @apply Việc kết hợp các thành phần (components) và quá trình trích xuất (extraction) giúp cân bằng giữa tính dễ đọc (readability) và tính hữu dụng (usability) của mã nguồn. Cuối cùng, với cấu hình Purge nghiêm ngặt, nó có thể tạo ra mã định dạng (style code) hiệu quả và gọn nhẹ, trở thành giải pháp định dạng mạnh mẽ cho các dự án web hiện đại.

hosting.com
SSL miễn phí, CDN Cloudflare, WAF, hơn 40 trung tâm dữ liệu toàn cầu để lựa chọn, độ trễ thấp hơn nhờ vị trí gần, hỗ trợ dịch vụ 24/7/365, hiện có thể tiết kiệm tới 67% chi phí, hỗ trợ xây dựng AI và tối ưu hóa SEO

FAQ 常见问题

CSS file do Tailwind CSS tạo ra có lớn không?

Trong môi trường phát triển, do chứa tất cả các lớp (classes) có thể có, tệp CSS của Tailwind thực sự khá lớn (thường từ vài MB). Điều này nhằm mang lại trải nghiệm phát triển tốt nhất cho người dùng.

Tuy nhiên, trong môi trường sản xuất, việc sử dụng PurgeCSS một cách đúng cách (trong Tailwind CSS phiên bản 2.1 trở lên) sẽ giúp loại bỏ các tệp CSS không cần thiết, giúp tăng tốc độ tải trang và cải thiện hiệu năng trang web. content (Với tùy chọn cấu hình này), framework sẽ phân tích tĩnh các tệp mã nguồn của dự án bạn và chỉ giữ lại những lớp (classes) mà bạn thực sự sử dụng. Nhờ đó, file CSS của phiên bản sản phẩm cuối cùng thường có thể được nén xuống còn 10KB hoặc thậm chí ít hơn, mang lại hiệu suất rất tốt.

Trong các dự án nhóm, làm thế nào để đảm bảo tính nhất quán khi sử dụng Tailwind CSS?

Có thể áp dụng nhiều biện pháp khác nhau để đảm bảo tính nhất quán: Trước hết, hãy sử dụng chung thư mục gốc của dự án cho tất cả các tài liệu và thư mục con. tailwind.config.js Các tệp tin được sử dụng để định nghĩa các yếu tố thiết kế như màu sắc, khoảng cách, phông chữ, v.v.; đây chính là nguồn thông tin thống nhất duy nhất cần được sử dụng. Thứ hai, đối với các kiểu giao diện người dùng (UI) được lặp lại nhiều lần (chẳng hạn như nút bấm, ô nhập, th @apply Hãy trích xuất các thành phần cần thiết thành một lớp component thống nhất, hoặc kết hợp chúng với các framework JavaScript như React, Vue để tạo thành những component có thể được tái sử dụng. Sau đó, bạn có thể sử dụng chúng cùng nhau một cách linh hoạt. Prettierprettier-plugin-tailwindcss Plugin tự động sắp xếp tên các lớp (class names) và giúp thống nhất phong cách mã nguồn (code style).

Làm thế nào để ghi đè phong cách (style) của các thành phần trong thư viện bên thứ ba?

Khi sử dụng các thư viện giao diện người dùng (UI) bên thứ ba có kiểu dáng riêng, các lớp hữu ích (utility classes) của Tailwind có thể không thể áp dụng được do mức độ đặc hiệu (specificity) thấp. Có một vài chiến lược để khắc phục điều này: Đầu tiên, hãy thử sử dụng các lớp hữu ích của Tailwind… !important Modifier: được thêm sau tên lớp. !như bg-red-500!Điều này sẽ làm tăng thêm giá trị cho tuyên bố đó. !importantThứ hai, bạn có thể tăng độ chính xác của các quy tắc CSS bằng cách bao bọc phần tử cần thiết trong một container có ID cụ thể, sau đó sử dụng các selector chính xác hơn trong bảng định dạng (style sheet) của bạn. Cách cơ bản nhất là, nếu thư viện hỗ trợ, hãy tắt các kiểu dáng mặc định của nó và sử dụng hoàn toàn các lớp (classes) từ Tailwind để xây dựng lại giao diện theo ý muốn của bạn.

Liệu Tailwind CSS có phù hợp để sử dụng cùng với các giải pháp CSS-in-JS không?

Thông thường, không khuyến nghị sử dụng Tailwind CSS cùng với các phương pháp thiết kế kiểu CSS-in-JS truyền thống (như styled-components, Emotion), vì triết lý và công cụ được sử dụng trong hai phương pháp này xung đột với nhau. Trọng tâm của Tailwind là các lớp (classes) được định nghĩa sẵn, trong khi CSS-in-JS tạo ra các kiểu (styles) một cách dinh hình (tức là tùy theo điều kiện cụ thể).

Tuy nhiên, Tailwind có thể hoạt động hiệu quả cùng với các giải pháp hoặc công cụ CSS-in-JS “không yêu cầu thời gian chạy” (zero-run-time), chẳng hạn như thông qua… twin.macro(Dùng cho React + Emotion) Windi CSS Đây là các biến thể của cách sử dụng CSS-in-JS, cho phép bạn viết các lớp (classes) của Tailwind trong cú pháp CSS-in-JS. Cách phổ biến hơn là sử dụng trực tiếp tên các lớp Tailwind dưới dạng chuỗi ký tự trong các component như React/Vue, và phương pháp này đã được chứng minh là rất hiệu quả.