Hướng dẫn toàn diện về Tailwind CSS: Từ cơ bản đến nâng cao

Đọc trong 2 phút
2026-03-18
2,346
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ì

Khi xây dựng các trang web hiện đại, việc viết mã định dạng (styles) một cách hiệu quả và nhất quán luôn là thách thức lớn đối với các nhà phát triển. Tailwind CSS là một framework CSS tập trung vào tính năng (feature-oriented), cung cấp một bộ các công cụ có tính linh hoạt cao và cấp độ thấp (low-level tools), cho phép bạn xây dựng thiết kế tùy chỉnh một cách nhanh chóng ngay trong các thẻ HTML, mà không cần phải rời khỏi tài liệu nguồn hoặc viết quá nhiều mã CSS tùy chỉnh.

Khác với các framework truyền thống như Bootstrap – những công cụ cung cấp sẵn các thành phần được đóng gói trước (như nút bấm, card), Tailwind CSS tập trung vào việc cung cấp các lớp công cụ (tool classes) nguyên thủy, mỗi lớp chỉ thực hiện một chức năng cụ thể. Ví dụ, bạn có thể sử dụng… text-center Để văn bản được trung tâm hóa, hãy sử dụng công cụ hoặc lệnh tương ứng. p-4 Hãy đặt giá trị cho độ lệch nội bộ (padding), hoặc sử dụng công cụ tương ứng để thực hiện điều đó. bg-blue-500 Hãy thiết lập một nền màu xanh dương nhé. Phương pháp sử dụng “CSS nguyên tử hóa” (atomic CSS) mang lại sự linh hoạt rất lớn; bạn có thể kết hợp các công cụ này để tạo ra bất kỳ thành phần độc đáo nào mình muốn, mà không bị ràng buộc bởi các kiểu dáng mặc định của framework, cũng không cần phải lo lắng về việc file CSS ngày càng trở nên dài và phức tạp.

Tệp tin cốt lõi là tệp cấu hình của nó. tailwind.config.jsThông qua tệp này, bạn có thể tùy chỉnh hoàn toàn hệ thống thiết kế của mình, bao gồm màu sắc, khoảng cách, phông chữ, các điểm đánh dấu (breakpoints) và tất cả các yếu tố thiết kế khác, nhằm đảm bảo rằng toàn bộ dự án có tính nhất quán cao về mặt thị giác.

Đọc thêm Hướng dẫn toàn diện về Tailwind CSS: Từ nhập môn đến thành thục framework CSS nguyên tử thực tế

Cách cài đặt và cấu hình

Cài đặt thông qua trình quản lý gói (package manager).

Trong hầu hết các dự án front-end hiện đại, việc cài đặt các thành phần phần mềm thông qua các công cụ quản lý gói (package managers) là phương pháp phổ biến và được khuyến nghị nhất. Điều này giúp bạn quản lý các thành phần phụ thuộc một cách dễ dàng và tích hợp chúng với các công cụ xây dựng (build tools). Đối với các dự án sử dụng npm, bạn có thể chạy lệnh cài đặt từ thư mục gốc của dự án. Gói cài đặt cốt lõi là… tailwindcss

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
npx tailwindcss init

Lệnh đầu tiên sẽ cài đặt Tailwind CSS vào dự án của bạn như một phụ thuộc phát triển (development dependency). Lệnh thứ hai… npx tailwindcss init Sau đó, một tệp cấu hình mặc định sẽ được tạo ra cho bạn. tailwind.config.jsTệp này là trái tim của Tailwind; mọi tùy chỉnh đều bắt đầu từ đây.

配置构建过程

Sau khi quá trình cài đặt hoàn tất, bạn cần phải cấu hình quy trình xây dựng (build process) để Tailwind có thể xử lý các tệp HTML của bạn và tạo ra file CSS cuối cùng. Thông thường, việc này được thực hiện trong tệp CSS chính của bạn. @tailwind Hãy thực hiện theo các hướng dẫn để tạo ra thứ có tên là… src/input.css Tệp tin (tên và đường dẫn có thể được tự định nghĩa), và thêm nội dung sau:

@tailwind base;
@tailwind components;
@tailwind utilities;

Ba lệnh này tương ứng với ba cấp độ khác nhau của Tailwind CSS: kiểu dáng cơ bản (basic styles), các lớp thành phần (component classes), và các lớp công cụ (utility classes). Tiếp theo, bạn cần sử dụng một công cụ xây dựng (như Vite, Webpack, hoặc PostCSS CLI) để xử lý tệp tin này. Ví dụ, khi sử dụng PostCSS CLI, bạn cần thực hiện các bước cụ thể như sau: package.json Hãy thêm một script xây dựng (build script) vào đó, và đảm bảo rằng nó tồn tại. postcss.config.js Tệp tin, bên trong đó chứa… tailwindcss Plugin.

Tối ưu hóa môi trường sản xuất

Để đảm bảo rằng các tệp CSS trong môi trường sản xuất có kích thước nhỏ nhất có thể, Tailwind sử dụng một kỹ thuật được gọi là “Loại bỏ các kiểu dáng không được sử dụng” (Remove Unused Styles). Điều này đòi hỏi bạn phải… tailwind.config.js phần content Trong các thuộc tính, hãy chỉ định tất cả các đường dẫn đến các tệp nguồn chứa tên lớp của Tailwind. Ví dụ về cách cấu hình như sau:

Đọc thêm Học sâu về Tailwind CSS: Từ các khái niệm cơ bản đến hướng dẫn phát triển dự án thực tế

/** @type {import('tailwindcss').Config} */
module.exports = {
  content: ["./src/**/*.{html,js,jsx,ts,tsx,vue}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

Như vậy, khi xây dựng, Tailwind sẽ quét tất cả các tên lớp trong những tệp này và chỉ đưa các lớp công cụ thực sự được sử dụng vào bản CSS cuối cùng, từ đó giúp giảm đáng kể kích thước của tệp CSS.

Các lớp công cụ cốt lõi và mẹo hữu ích

Nắm vững cách thiết kế bố cục và điều chỉnh khoảng cách giữa các thành phần trên trang web

Thiết kế bố cục và khoảng cách là nền tảng cơ bản trong việc xây dựng giao diện người dùng. Tailwind cung cấp một bộ công cụ đầy đủ, dựa trên hệ thống tỷ lệ, để kiểm soát cách sắp xếp các phần tử trên trang web và mối quan hệ không gian giữa chúng. Để điều chỉnh loại phần tử, bạn có thể sử dụng các công cụ được cung cấp bởi blockinline-blockflexgrid Chờ một chút để thiết lập chế độ hiển thị một cách nhanh chóng. Cả kiểu bố trí Flexbox và Grid đều có các lớp công cụ (tool classes) tương ứng, ví dụ như… justify-centeritems-centergrid-cols-3 v.v.

Hệ thống điều chỉnh khoảng cách giữa các thành phần trên trang web thực sự rất mạnh mẽ. Nó sử dụng một tỷ lệ thu nhỏ thống nhất (mặc định là 0.25rem).p-4 Đại diện cho độ rộng padding bằng 1rem.m-2 Điều này biểu thị độ rộng của đường viền (margin) là 0.5rem. Hướng của đường viền cũng được xác định rõ ràng.pt-4 Đúng rồi, đó là thuộc tính `padding-top`.mx-auto Đây là giá trị margin theo hướng ngang được tự động thiết lập, thường được sử dụng để trung tâm các phần tử cấp block (block-level elements). Việc sử dụng các lớp (classes) này một cách có hệ thống có thể đảm bảo rằng khoảng cách giữa các thành phần trên trang web được phân bố một cách hài hòa và nhất quá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%

Kiểm soát linh hoạt màu sắc và bố cục

Trong thiết kế trực quan, màu sắc và bố cục (typography) đóng vai trò vô cùng quan trọng. Tailwind cung cấp một bảng màu phong phú và đẹp mắt, được sắp xếp theo các dạng độ dốc số (digital gradients). Ví dụ,text-gray-700 Dùng cho văn bản màu xám đậm.bg-red-100 Dùng cho nền màu hồng nhạt.border-blue-300 Dùng để tạo đường viền màu xanh lam nhạt. Bạn cũng có thể sử dụng nó để… tailwind.config.jstheme.extend Bạn có thể dễ dàng thêm hoặc thay đổi màu sắc ở một số phần cụ thể.

Về mặt bố cục trang, các công cụ hỗ trợ điều chỉnh tất cả các thuộc tính như kích thước chữ, độ đậm mờ của chữ, độ cao của dòng, và khoảng cách giữa các chữ cái.text-xl Đại diện cho kiểu chữ cỡ rất lớn (super large font).font-bold Được biểu thị bằng chữ in đậm.leading-relaxed Đại diện cho độ cao dòng (line height) linh hoạt. Thiết kế thích ứng (responsive design) cũng được tích hợp sẵn; bạn chỉ cần thêm tiền tố “breakpoint” trước tên lớp (class) để kích hoạt các tính năng liên quan. md:text-lgBạn có thể áp dụng kiểu thiết kế này trên các màn hình có kích thước trung bình trở lên, nhằm tạo ra một quy trình làm việc ưu tiên cho thiết bị di động (mobile-first workflow).

Kết hợp và tái sử dụng các kiểu dáng (Combining and Reusing Styles)

Khi dự án phát triển, việc lặp lại việc viết các nhóm lớp công cụ giống nhau trong HTML trở nên rườm rà và khó bảo trì. Tailwind cung cấp một số giải pháp để tái sử dụng các kiểu thiết kế (styles). Cách đơn giản nhất là kết hợp chúng trực tiếp trong HTML. Tuy nhiên, đối với các thành phần phức tạp, việc sử dụng các công cụ được thiết kế sẵn trong Tailwind là được khuyến nghị. @apply Hãy trích xuất các kiểu dáng chung (common styles) từ tệp CSS của bạn.

Đọc thêm Hướng dẫn tối thượng về Tailwind CSS: Xây dựng giao diện frontend chuyên nghiệp hiện đại từ con số không

.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;
}

Như vậy, bạn có thể sử dụng nó trong HTML. class="btn-primary"Điều này không chỉ giúp giữ được tính linh hoạt của Tailwind mà còn mang lại khả năng tái sử dụng các định dạng CSS. Một cách mạnh mẽ hơn nữa là sử dụng hệ thống component của các framework JavaScript (như React, Vue) để bao bọc cả kiểu dáng (styles) lẫn cấu trúc (structure) của trang web.

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

“Mobile-first” responsive breakpoints (điểm đứt phản ứng thích ứng theo nguyên tắc ưu tiên thiết bị di động)

Tailwind CSS áp dụng chiến lược thiết kế thích ứng theo nguyên tắc “di động được ưu tiên” (mobile-first). Điều này có nghĩa là các lớp công cụ (utility classes) không có tiền tố sẽ hoạt động trên mọi kích thước màn hình, trong khi các lớp có tiền tố (chẳng hạn như…) sẽ chỉ được áp dụ md:, lg:Nó sẽ có hiệu lực tại điểm dừng (breakpoint) được chỉ định hoặc các điểm dừng cao hơn. Công cụ này cung cấp sẵn năm điểm dừng mặc định:sm (640px)md (768px)lg (1024px)xl (1280px) và 2xl (1536px).

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

Ví dụ, một… w-full md:w-1/2 lg:w-1/3 Đây là một đoạn mã HTML mô tả cách thay đổi kích thước của một container tùy theo loại thiết bị: trên điện thoại di động, nó sẽ chiếm toàn bộ chiều rộng màn hình; trên máy tính bảng (cỡ màn hình MD), nó sẽ chỉ chiếm một nửa chiều rộng; và trên máy tính để bàn (c tailwind.config.jstheme.screens Bạn có thể tự định nghĩa hoàn toàn các giá trị của những điểm dừng (breakpoints) này để phù hợp với nhu cầu thiết kế của mình.

Xử lý các trạng thái như hover, focus

Các ứng dụng Web hiện đại yêu cầu có những phản hồi tương tác phong phú từ người dùng. Tailwind cung cấp các biến trạng thái (state variables), giúp bạn dễ dàng áp dụng các phong cách thiết kế khác nhau tùy theo trạng thái của ứng dụng. Bạn chỉ cần thêm tiền tố biểu thị trạng thái trước các lớp (classes) được sử dụng trong ứng dụng. Ví dụ:hover:bg-gray-100 Màu nền sẽ được áp dụng khi con trỏ chuột di chuyển qua đối tượng đó (khi con trỏ được đặt trên đối tượng đó).focus:ring-2 Một đường viền hình vòng sẽ được thêm vào khi phần tử nhận được sự chú ý (focus).

Ngoài ra hoverfocusVà còn nữa… activedisabledgroup-hover(Khi con trỏ di chuột lên phần tử cha, kiểu dáng của con trỏ sẽ thay đổi), v.v. Đối với các phần tử biểu mẫu (form elements), còn có những điều khác nữa… checkedrequired Chờ đợi các trạng thái cụ thể. Những biến thể của các trạng thái này có thể được kết hợp một cách tự do với các công cụ khác, cho phép bạn tạo ra những giao diện có tính tương tác cao mà không cần phải viết một dòng JavaScript tùy chỉnh hay các bộ lọc CSS phức tạp.

Sử dụng chế độ màu tối

Khi chế độ tối (dark mode) trở nên phổ biến ở cấp độ hệ điều hành, việc cung cấp giao diện màu tối cho các trang web đã trở thành một yêu cầu tiêu chuẩn. Tailwind CSS đã tích hợp sẵn hỗ trợ cho chế độ tối này. Bạn chỉ cần… tailwind.config.js thiết lập darkMode: 'class'(hoặc 'media'Sau đó, bạn có thể sử dụng nó ngay. dark: Các biến thể được sử dụng để định nghĩa giao diện (style) trong chế độ màu tối (dark mode).

<div class="bg-white dark:bg-gray-800 text-gray-900 dark:text-gray-100">
  <!-- 内容 -->
</div>

Khi bạn chọn… 'class' Khi xây dựng chiến lược, bạn cần sử dụng JavaScript để thao tác với phần tử gốc (root element) của tài liệu HTML.Thêm hoặc xóa nội dung trên (…) class="dark" Hãy chuyển sang chủ đề khác nhé. Cách này cho phép bạn kiểm soát hoàn toàn việc chuyển đổi chủ đề, rất linh hoạt.

Tóm lại

Tailwind CSS đã thay đổi cách các nhà phát triển viết mã CSS một cách căn bản nhờ vào hệ thống tên lớp có tính ưu tiên cao và được phân chia thành các thành phần nhỏ (atomic classes). Nó loại bỏ việc sử dụng các thành phần được định nghĩa sẵn, thay vào đó cung cấp những công cụ nguyên thủy giúp người dùng có được sự tự do thiết kế và tốc độ xây dựng không ngang có. Từ việc cài đặt, làm quen với các lớp công cụ cốt lõi, đến việc thực hiện thiết kế thích ứng với các thiết bị khác nhau và xây dựng các trạng thái tương tác phức tạp, Tailwind đều cung cấp những giải pháp có hệ thống và có thể được cấu hình. Chức năng xóa các định dạng CSS không được sử dụng giúp đảm bảo hiệu quả tối đa cho sản phẩm cuối cùng, trong khi khả năng tùy chỉnh sâu rộng giúp nó hoàn hảo khi được tích hợp vào bất kỳ hệ thống thiết kế nào. Mặc dù ban đầu có thể cần phải ghi nhớ một số tên lớp, nhưng một khi đã nắm vững, hiệu quả phát triển và độ nhất quán mà Tailwind mang lại là điều mà cách viết CSS truyền thống khó có thể so sánh được. Dù bạn cần thiết kế nguyên mẫu nhanh chóng hay xây dựng một ứng dụng quy mô lớn cần bảo trì lâu dài, Tailwind CSS đều là một công cụ hiện đại vô cùng giá trị.

FAQ 常见问题

Tailwind CSS 和 Bootstrap 主要区别是什么

Tailwind CSS là một framework dạng “headless” (không chứa các thành phần thiết kế sẵn như nút bấm, thanh điều hướng), chỉ cung cấp các công cụ CSS ở cấp độ thấp, cho phép bạn tự do tạo ra thiết kế theo ý muốn. Ngược lại, Bootstrap là một thư viện các thành phần (components) được thiết kế sẵn với nhiều kiểu trông khác nhau; bạn có thể sử dụng chúng ngay lập tức hoặc tùy chỉnh chúng theo phong cách riêng. Tailwind mang tính linh hoạt cao hơn, phù hợp với những dự án yêu cầu thiết kế được tùy chỉnh một cách chi tiết; trong khi Bootstrap thì dễ sử dụng ngay từ đầu và giúp xây dựng giao diện có phong cách nhất quán nhanh hơn.

Trong các dự án lớn, việc sử dụng các tên lớp HTML quá dài có thể gây khó khăn trong việc bảo trì không?

Đây thực sự là một lo ngại phổ biến mà các nhà phát triển thường gặp phải trong giai đoạn đầu. Trong thực tế, vấn đề này có thể được giải quyết một cách hiệu quả thông qua việc sử dụng các thành phần (components) một cách hợp lý. Trong các framework như React, Vue, bạn có thể đóng gói các danh sách dài bên trong các component. Ngoài ra, việc sử dụng các công cụ và design pattern phù hợp cũng giúp giảm bớt sự phức tạp trong @apply Việc trích xuất các tổ hợp kiểu dáng trùng lặp trong CSS cũng là một phương pháp được khuyến nghị chính thức. Những cách này giúp đảm bảo tính dễ đọc của mã HTML, đồng thời vẫn giữ được những ưu điểm về tính “nguyên tử hóa” (atomicity) của Tailwind. Thực tế, vì logic kiểu dáng được tập trung trực tiếp trên các phần tử HTML, việc theo dõi và quản lý các kiểu dáng trở nên dễ dàng hơn nhiều so với việc tìm kiếm và thay thế chúng trong những tệp CSS có kích thước lớn.

Làm thế nào để tùy chỉnh màu sắc hoặc khoảng cách của giao diện (theme colors/spacing)?

Tất cả các tùy chỉnh đều nằm trong thư mục gốc của dự án. tailwind.config.js Việc hoàn thành đã được thực hiện trong tệp tin. Bạn có thể… theme.extend Bạn có thể thêm các giá trị mới vào đối tượng để mở rộng chủ đề mặc định, hoặc… (You can add new values to the object to extend the default theme, or…) theme Trong đối tượng, bạn có thể trực tiếp ghi đè các giá trị hiện có. Ví dụ, để thêm một màu đại diện cho thương hiệu, bạn có thể cấu hình như sau:theme: { extend: { colors: { brand: '#0fa9e6', } } }Sau đó, bạn có thể sử dụng nó. bg-brandtext-brand Đã đến phần tên lớp (class names) rồi. Tất cả các yếu tố thiết kế như khoảng cách giữa các thành phần (spacing), phông chữ (font), điểm ngắt (breakpoints), v.v., đều có thể được tùy chỉnh theo cách tương tự.

Các tệp CSS được tạo ra bởi Tailwind có thể có kích thước khá lớn.

Trong chế độ phát triển, để bao gồm tất cả các lớp công cụ có thể có, tệp CSS của Tailwind thực sự sẽ khá lớn (khoảng vài MB). Tuy nhiên, đây không phải là vấn đề, bởi vì CSS cuối cùng được sử dụng trong môi trường sản xuất sẽ trải qua một quá trình tối ưu hóa được gọi là “loại bỏ các kiểu dáng không được sử dụng”. Bằng cách cấu hình đúng cách… tailwind.config.js trong content Đặc điểm nổi bật của Tailwind CSS là công cụ xây dựng (build tool) của nó sẽ quét các tệp template của bạn và chỉ đóng gói những lớp (classes) được sử dụng thực sự trong ứng dụng. Do đó, phiên bản CSS cuối cùng có kích thước rất nhỏ – thường chỉ từ vài KB đến vài chục KB – và điều này giúp nó trở nên cạnh tranh mạnh mẽ hơn so với các framework CSS khác.