Hướng dẫn sử dụng Tailwind CSS: Từ đầu tiên để nắm vững framework thiết kế có nguyên tắc ưu tiên tính hữu dụng

Đọc trong 2 phút
2026-03-20
2,533
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), được thiết kế để giúp người dùng xây dựng nhanh chóng các giao diện người dùng (user interfaces) tùy chỉnh. Khác với các framework truyền thống như Bootstrap hay Bulma – những framework cung cấp sẵn nhiều thành phần (components) được thiết kế sẵn – Tailwind cung cấp những lớp CSS (CSS classes) ở cấp độ thấp hơn, với chức năng cụ thể. Bạn có thể kết hợp các lớp này như xếp các khối xây dựng (building blocks) để tạo ra bất kỳ thiết kế nào mà không cần rời khỏi tệp HTML của mình. Triết lý cốt lõi của Tailwind là “tính hữu dụng được ưu tiên” (practicality first); framework này nhằm mục đích giúp các nhà phát triển thực hiện những thiết kế chính xác một cách hiệu quả nhất, đồng thời giữ cho kích thước gói CSS được giảm thiểu đến mức tối đa.

Nguyên lý hoạt động của nó dựa trên một hệ thống thiết kế có thể được cấu hình. Bạn sử dụng một công cụ có tên… tailwind.config.js Bạn có thể sử dụng tệp cấu hình của Tailwind CSS để định nghĩa các yếu tố thiết kế như bảng màu, phông chữ, khoảng cách giữa các thành phần trên trang, điểm dừng (breakpoints), v.v. Trong quá trình phát triển, bạn có thể tận dụng tất cả các lớp (classes) mà framework cung cấp; tuy nhiên, ở giai đoạn xây dựng sản phẩm (production build), Tailwind sẽ sử dụng một công cụ có tên “PurgeCSS” (được tích hợp từ phiên bản v3 trở đi) để quét các tệp mã nguồn của dự án và tự động loại bỏ tất cả các đoạn mã CSS không được sử dụng, từ đó tạo ra một tệp CSS được tối ưu hóa (rất gọn nhẹ).

Thiết lập môi trường và cấu hình cơ bản

Để bắt đầu sử dụng Tailwind CSS, trước tiên bạn cần tích hợp nó vào dự án của mình. Cách phổ biến nhất là cài đặt nó thông qua Node.js và npm (hoặc yarn).

Đọc thêm Từ cơ bản đến nâng cao: Hướng dẫn toàn diện để thành thạo Tailwind CSS và nâng cao hiệu suất phát triển frontend

Cài đặt thông qua PostCSS

Đây là cách được sử dụng phổ biến nhất và được khuyến nghị, bởi vì nó có thể tích hợp một cách hoàn hảo với hầu hết các công cụ xây dựng (như Vite, Webpack). Trước tiên, hãy cài đặt Tailwind cùng các phụ thuộc liên quan thông qua npm.

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
npm install -D tailwindcss postcss autoprefixer

Tiếp theo, hãy khởi tạo tệp cấu hình CSS của Tailwind. Chạy lệnh sau để tạo một tệp cấu hình mặc định: tailwind.config.js Tệp.

npx tailwindcss init

Sau đó, bạn cần tạo một tệp cấu hình PostCSS (thường có tên là…) postcss.config.js), và thêm Tailwind CSS cùng Autoprefixer vào danh sách các plugin.

// postcss.config.js
module.exports = {
  plugins: {
    tailwindcss: {},
    autoprefixer: {},
  }
}

Cuối cùng, trong tệp CSS chính của bạn (ví dụ: src/styles.cssinput.css), hãy sử dụng @tailwind Các lệnh này được sử dụng để đưa các kiểu dáng cơ bản, các lớp thành phần (components) và các lớp công cụ (tools) của Tailwind vào trang web.

/* src/styles.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

Tùy chỉnh tệp cấu hình

Được tạo ra tailwind.config.js Tệp tin này chính là trung tâm điều khiển của hệ thống thiết kế của bạn. Bạn có thể mở rộng hoặc thay thế các chủ đề mặc định tại đây; ví dụ như thêm màu sắc của thương hiệu hoặc tùy chỉnh khoảng cách giữa các thành phần trên giao diện.

Đọc thêm Tìm hiểu sâu về Tailwind CSS: Hướng dẫn xây dựng giao diện từ nguyên lý đến thực hành

// tailwind.config.js
module.exports = {
  content: ["./src/**/*.{html,js,jsx,ts,tsx,vue}"],
  theme: {
    extend: {
      colors: {
        'brand-blue': '#1992d4',
      },
      spacing: {
        '72': '18rem',
        '84': '21rem',
      }
    },
  },
  plugins: [],
}

Lưu ý content Các trường dữ liệu này vô cùng quan trọng; chúng thông báo cho Tailwind những tệp nào cần được quét để tìm kiếm tên các lớp (classes) được sử dụng, nhằm mục đích tối ưu hóa hiệu suất ứng dụng trong môi trường sản xuất.

Các lớp hữu ích cốt lõi và các mô hình sử dụng (Core Practical Classes and Usage Patterns)

Trọng tâm của Tailwind chính là một bộ lớn các lớp (classes) hữu ích được đặt tên một cách có quy tắc, bao gồm tất cả các thuộc tính CSS liên quan đến bố cục (layout), khoảng cách (spacing), trình bày (typography), màu sắc (colors), đường viền (borders), và các hiệu ứng (effects).

Kiểm soát bố cục và khoảng cách

Tailwind sử dụng một bộ thang đo khoảng cách dựa trên đơn vị “rem” – một đơn vị độ dài có tính dự đoán được trong thiết kế web. Các tên lớp (class names) trong Tailwind thường được đặt theo quy tắc này. p-4padding: 1rem;m-2(margin: 0.5rem)mt-8(margin-top: 2rem); Các lớp liên quan đến bố cục như… flex, grid, block, hidden V.v., nhằm giúp bạn có thể xây dựng cấu trúc nhanh chóng.

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%
<div class="flex justify-between items-center p-6 bg-gray-100">
  <div class="text-lg font-bold">Logo</div>
  <nav class="space-x-4">
    <a href="#" class="text-gray-700 hover:text-brand-blue">Trang chủ</a>
    <a href="#" class="text-gray-700 hover:text-brand-blue">Về</a>
  </nav>
</div>

Thiết kế phản ứng (Responsive Design) và trạng thái tương tác (Interactive States)

Tailwind sử dụng một hệ thống điểm đánh dấu (breakpoints) dựa trên nguyên tắc “di động được ưu tiên” (mobile-first). Các điểm đánh dấu mặc định bao gồm: sm:(640px),md:(768px)、lg:(1024px)、xl:(1280px)、2xl:(1536px). Bạn có thể dễ dàng tạo ra một bố cục thích ứng với các thiết bị khác nhau bằng cách thêm tiền tố “breakpoint” trước tên lớp (class).

Trạng thái tương tác được thực hiện thông qua các bộ chỉ thị biến thể (variant modifiers), ví dụ như… hover:, focus:, active:, disabled:Bạn có thể kết hợp chúng với bất kỳ lớp hữu dụng nào.

<button class="bg-brand-blue text-white py-2 px-4 rounded-lg hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-500 focus:ring-opacity-50 active:scale-95 transition duration-150">
  点击我
</button>

Kỹ thuật nâng cao và Thực hành tốt nhất

Khi quy mô dự án mở rộng, việc nắm vững một số kỹ thuật nâng cao sẽ giúp bạn tạo ra mã nguồn hiệu quả hơn và dễ bảo trì hơn.

Đọc thêm Học cách sử dụng Tailwind CSS: Hướng dẫn thực hành từ cơ bản đến nâng cao về framework thiết kế giao diện người dùng (front-end)

Extract components and reuse styles.

Mặc dù việc kết hợp các tên lớp trực tiếp trong HTML là cách được khuyến nghị bởi Tailwind, nhưng đối với những trường hợp có sự kết hợp các kiểu dáng phức tạp xảy ra thường xuyên trong dự án, việc viết lại những chuỗi tên lớp dài sẽ làm giảm tính dễ bảo trì. Trong những trường hợp này, có một số giải pháp có thể được áp dụng.

Loại thứ nhất là sử dụng… @apply Hướng dẫn: Bạn có thể trích một nhóm các lớp (classes) từ thư viện Tailwind CSS vào một lớp CSS mới trong tệp CSS tùy chỉnh của mình.

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
/* src/styles.css */
@tailwind base;
@tailwind components;
@tailwind utilities;

@layer components {
  .btn-primary {
    @apply py-3 px-6 bg-brand-blue text-white font-semibold rounded-lg shadow-md hover:bg-blue-700 focus:outline-none focus:ring-2 focus:ring-blue-400 transition duration-200;
  }
  .card {
    @apply bg-white rounded-xl shadow-lg p-6 border border-gray-200;
  }
}

Sau đó, trong HTML, bạn có thể sử dụng những cách diễn đạt ngắn gọn, súc tích. class=“btn-primary”class=“card”

Cách thứ hai là trong các framework dựa trên các thành phần (như React, Vue), việc đóng gói các kiểu dáng (styles) lặp lại vào một thành phần UI có thể tái sử dụng. Đây là phương pháp phù hợp nhất với các thực tiễn phát triển front-end hiện đại.

Phát triển biến thể tùy chỉnh và tiện ích mở rộng (plugins)

Khả năng cấu hình của Tailwind thực sự rất mạnh mẽ. Bạn có thể thêm các lớp hữu ích mới thông qua các plugin, hoặc tạo các biến thể cho các lớp hữu ích đã được định nghĩa sẵn. Ví dụ, bạn có thể tạo một plugin để hỗ trợ chế độ “đen” (dark mode) trong thiết kế web. dark: Hỗ trợ các biến thể (thực tế là đã được tích hợp sẵn từ phiên bản v2 trở đi), hoặc thêm chức năng cho “phần tử con đầu tiên”. first: biến thể để hỗ trợ trạng thái của một thư viện JavaScript cụ thể.

Cách sử dụng nâng cao hơn là viết các plugin riêng để tạo ra các lớp công cụ cụ thể cần thiết cho dự án. Điều này thường liên quan đến việc thao tác với cây ngữ pháp trừu tượng (Abstract Syntax Tree – AST) của PostCSS, và phù hợp với những nhóm có nhu cầu đặc biệt.

Tóm lại

Tailwind CSS đã tạo nên một sự thay đổi lớn trong phương pháp phát triển front-end nhờ vào triết lý độc đáo của mình – “Tính hữu dụng được ưu tiên hàng đầu”. Bằng cách cung cấp một bộ công cụ cấp thấp đầy đủ và có thể được cấu hình, Tailwind CSS đã chuyển các quyết định thiết kế từ các bảng định dạng (style sheets) sang ngôn ngữ đánh dấu (markup languages), từ đó nâng cao đáng kể tính linh hoạt và tốc độ phát triển giao diện người dùng (UI). Cơ chế tối ưu hóa thông minh của nó giúp đảm bảo rằng tệp CSS cuối cùng được tạo ra rất gọn nhẹ, giải quyết triệt để vấn đề về kích thước lớn của các gói framework CSS truyền thống. Mặc dù ban đầu có thể cần phải ghi nhớ một số lượng lớn tên lớp, nhưng một khi bạn đã quen với logic đặt tên của Tailwind CSS và kết hợp nó với các mô hình phát triển dựa trên các thành phần (component-based development) hiện đại, Tailwind CSS sẽ trở thành công cụ mạnh mẽ để xây dựng các ứng dụng web hiện đại với hiệu suất cao và tính tùy chỉnh cao.

FAQ 常见问题

Tailwind CSS có phù hợp với các dự án lớn không? Liệu nó có làm cho các tên lớp HTML trở nên lộn xộn không?

Tailwind CSS hoàn toàn phù hợp với các dự án lớn. Nỗi lo ngại về tình trạng lộn xộn trong các tên lớp (class names) là điều khá phổ biến, nhưng có thể được quản lý một cách hiệu quả thông qua thực hành và các quy ước cụ thể. Trong các dự án lớn, những thực tiễn tốt nhất bao gồm: 1) Kết hợp với các framework component hóa (như React, Vue, Svelte) để đóng gói các định dạng (styles) cùng với logic của component; nhờ đó, danh sách các tên lớp dài sẽ được giới hạn trong template của component và không làm ảnh hưởng đến toàn bộ hệ thống (không gây “nhiễm bẩn” cho các phần khác của ứng dụng). 2) Sử dụng các công cụ hoặc cơ chế tổ chức có tổ chức để quản lý các tên lớp, như các hệ thống đị @apply Trích xuất các mẫu kiểu dáng có tính lặp lại cao và phức tạp, sau đó tạo thành các lớp thành phần có ý nghĩa rõ ràng (semantic component classes). 3) Sử dụng các công cụ như plugin Tailwind CSS của Prettier để tự động sắp xếp và định dạng tên các lớp, nhằm đảm bảo tính nhất quán trong thiết kế. Nhiều công ty lớn (như GitHub, Netflix) đã áp dụng phương pháp này một cách thành công trong môi trường sản xuất.

Làm thế nào để tồn tại song song với các thư viện mã CSS hoặc Sass hiện có?

Bạn có thể từng bước tích hợp Tailwind CSS vào các dự án hiện có. Bạn có thể đồng thời thêm cả Tailwind CSS và CSS ban đầu của mình vào bảng định dạng kiểu toàn cục (global style sheet). Tuy nhiên, bạn cần lưu ý đến vấn đề về độ đặc hiệu (specificity) của các định dạng CSS. Các lớp hữu ích trong Tailwind có độ đặc hiệu thấp (do chỉ sử dụng các chọn lọc lớp đơn lẻ), vì vậy chúng rất dễ bị các chọn lọc có độ đặc hiệu cao hơn trong mã nguồn hiện có của bạn “lấn át” (overridden).

Một chiến lược để thực hiện quá trình chuyển đổi một cách suôn sẻ là: trước tiên, hãy sử dụng Tailwind cho các tính năng hoặc thành phần mới ở rìa của dự án. Sau đó, khi tái cấu trúc các thành phần cũ, hãy từng bước thay thế mã CSS hiện có bằng các lớp (classes) từ Tailwind. Bạn thậm chí có thể kết hợp sử dụng cả Tailwind với mã CSS tùy chỉnh nữa. @apply Hãy sử dụng kết hợp giữa các lớp công cụ của Tailwind CSS và phong cách thiết kế cũ của bạn như một bước chuyển đổi.

Sự khác biệt giữa Tailwind CSS phiên bản 2, phiên bản 3 và chế độ JIT (Just-In-Time compilation) là gì?

Tailwind CSS v2 là phiên bản đầu tiên được coi là ổn định, với nhiều tính năng mới như chế độ màu tối và bảng màu được cải tiến. Tuy nhiên, engine cốt lõi của nó (được gọi là “AOT” – Precompiled Optimization) yêu cầu phải tạo trước tất cả các lớp (classes) có thể xuất hiện trong ứng dụng.

Phiên bản 2.1 đã giới thiệu chế độ “JIT” (Just-In-Time Compilation) như một tính năng thử nghiệm. Trình biên dịch JIT sẽ tạo ra các định dạng thiết kế (styles) theo nhu cầu thực tế, thay vì tạo toàn bộ bảng định dạng trước. Điều này mang lại nhiều lợi ích lớn: tốc độ xây dựng ứng dụng được cải thiện đáng kể và hệ thống hỗ trợ mọi loại giá trị có thể có. top-[117px]Hỗ trợ sự kết hợp giữa tất cả các biến thể và bất kỳ loại nào.

Tailwind CSS phiên bản 3 được xây dựng hoàn toàn dựa trên công cụ JIT (Just-In-Time compilation) và được kích hoạt theo mặc định. Do đó, trong phiên bản 3, bạn không cần phải cấu hình chế độ JIT; nó tự động mang lại tất cả những lợi ích của công nghệ này: quá trình biên dịch diễn ra nhanh hơn, hỗ trợ các giá trị linh hoạt, và cho phép tạo ra nhiều biến thể khác nhau. Vì vậy, đối với các dự án mới, bạn nên sử dụng trực tiếp phiên bản 3 hoặc các phiên bản mới hơn.

Làm thế nào để giải quyết vấn đề về sự không nhất quán trong thứ tự sắp xếp tên lớp (class names) giữa các thành viên trong nhóm?

Sự không nhất quán trong thứ tự sắp xếp các tên lớp (class names) có thể ảnh hưởng đến độ dễ đọc của mã nguồn và tính rõ ràng trong quá trình quản lý phiên bản (version control). Cách hiệu quả nhất để giải quyết vấn đề này là sử dụng các công cụ tự động hóa. Chúng tôi khuyên bạn nên sử dụng công cụ định dạng mã Prettier, đồng thời cài đặt phiên prettier-plugin-tailwindcss Plugin.

Sau khi được cài đặt và thiết lập, Prettier sẽ tự động sắp xếp các tên lớp theo một thứ tự được khuyến nghị (thường là: bố cục -> khoảng cách giữa các thành phần -> định dạng văn bản -> yếu tố thẩm mỹ -> các yếu tố khác). Điều này đảm bảo rằng tất cả các thành viên trong nhóm đều sử dụng cùng một thứ tự khi đặt tên lớp, giúp tránh việc phải duy trì các quy tắc một cách thủ công. Nhờ đó, mã nguồn trở nên gọn gàng và dễ bảo trì hơn rất nhiều.