Hướng dẫn toàn diện về Tailwind CSS: Xây dựng giao diện web hiện đại và responsive từ con số 0

Đọc trong 3 phút
2026-03-15
2,331
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 hữu dụng, cung cấp một số lượng lớn các lớp CSS ở cấp độ thấp nhằm giúp các nhà phát triển xây dựng nhanh chóng các giao diện người dùng tùy chỉnh. Khác với các framework như Bootstrap hoặc Foundation – những framework cung cấp sẵn các thành phần như nút bấm, card – Tailwind không cung cấp bất kỳ thành phần nào được thiết kế sẵn. Thay vào đó, nó cung cấp một loạt các lớp CSS “nguyên tử” (atomic classes), mỗi lớp tương ứng với một thuộc tính CSS duy nhất. Các nhà phát triển có thể kết hợp các lớp này để tạo ra kiểu dáng mong muốn, từ đó đạt được mức độ tự do thiết kế cao nhất, đồng thời tránh được những vấn đề thường gặp trong việc đặt tên và xác định tính đặc hiệu của các thuộc tính CSS truyền thống.

Triết lý cốt lõi của nó là “tính thực dụng được ưu tiên”. Điều này có nghĩa là bạn trực tiếp sử dụng các tên lớp (class names) trong HTML để định dạng giao diện, ví dụ như: <code>text-blue-500</code> Để thiết lập văn bản màu xanh, hãy sử dụng… <code>p-4</code> Hãy sử dụng cách này để thiết lập các khoảng trắng (padding) bên trong. Phương pháp này giúp tăng tốc đáng kể quá trình phát triển ứng dụng, vì bạn không cần phải liên tục chuyển đổi giữa các tệp HTML và CSS chỉ để thay đổi một kiểu dáng đơn giản, cũng không cần phải suy nghĩ quá nhiều về cách đặt tên cho các lớp (class) một cách có ý nghĩa. Ngoài ra, do hệ thống thiết kế của Tailwind được tích hợp sẵn, nó đảm bảo rằng các yếu tố thiết kế như khoảng trắng, màu sắc, kích thước chữ, v.v. sẽ được thống nhất xuyên suốt toàn bộ dự án.

Một tính năng quan trọng khác là phương pháp thiết kế thích ứng (responsive design) của nó. Tailwind sử dụng các tiền tố (prefixes) để định nghĩa các kiểu dáng (styles) tương ứng với các điểm đánh dấu (breakpoints) khác nhau trong màn hình. <code>md:text-center</code> Điều này có nghĩa là văn bản sẽ được đặt ở vị trí giữa màn hình đối với các kích thước màn hình trung bình trở lên. Giải pháp này giúp việc tạo ra các bố cục thích ứng (responsive layouts) trở nên cực kỳ trực quan và hiệu quả.

Đọc thêm Xây dựng giao diện Web hiện đại và responsive hiệu quả với Tailwind CSS

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

Có nhiều cách để bắt đầu sử dụng Tailwind CSS, trong đó phương pháp được khuyến nghị nhất là thông qua công cụ CLI chính thức của nó hoặc việc tích hợp với các công cụ xây dựng (như Vite, Webpack). Dưới đây là quy trình tiêu chuẩn để cài đặt và khởi tạo Tailwind CSS bằng Node.js và CLI.

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

Trước tiên, bạn cần tạo một thư mục cho dự án và khởi tạo npm (Node Package Manager). Sau đó, sử dụng npm để cài đặt Tailwind CSS cùng với các phụ thuộc của nó.

npm init -y
npm install -D tailwindcss postcss autoprefixer
npx tailwindcss init

Lệnh trên sẽ cài đặt Tailwind CSS, PostCSS (một công cụ dùng để chuyển đổi mã CSS) và Autoprefixer (công cụ tự động thêm các tiền tố cần thiết cho CSS theo từng trình duyệt), đồng thời tạo ra một tệp cấu hình mặc định. tailwind.config.js

Tiếp theo, bạn cần chỉ định trong tệp cấu hình những tệp nào sẽ sử dụng các tên lớp (class names) của Tailwind. Điều này giúp Tailwind có thể tối ưu hóa quá trình biên dịch (build) trong môi trường sản xuất, chỉ đóng gói những phần stlye thực sự được sử dụng, từ đó tạo ra tệp CSS có kích thước nhỏ nhất. Hãy mở tệp cấu hình đó. tailwind.config.js tệp, trong content Thêm đường dẫn tới tệp mẫu của bạn vào mảng.

// tailwind.config.js
module.exports = {
  content: ["./src/**/*.{html,js}"],
  theme: {
    extend: {},
  },
  plugins: [],
}

Sau đó, hãy tạo một tệp CSS chính (ví dụ: main.css). src/input.cssBạn cần tạo một tệp CSS mới, chẳng hạn là `styles.css`, và trong đó nhập các lệnh (instructions) của Tailwind CSS.

Đọc thêm Hướng dẫn thực hành Tailwind CSS từ cơ bản đến nâng cao: Xây dựng trang web hiện đại và đáp ứng

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

Cuối cùng, thông qua lệnh CLI để khởi động quá trình xây dựng, lắng nghe thay đổi tệp và xuất ra CSS cuối cùng.

npx tailwindcss -i ./src/input.css -o ./dist/output.css --watch

Bây giờ, bạn có thể thêm các liên kết (links) vào tệp HTML từ những nội dung đã được tạo ra. output.cssVà bắt đầu sử dụng các lớp hữu ích (utility classes) của Tailwind CSS.

Các lớp hữu ích cốt lõi và thiết kế bố cục (Core Practical Classes and Layout)

Các lớp hữu ích (utility classes) trong Tailwind CSS bao phủ hầu hết tất cả các thuộc tính CSS, và chúng có thể được phân loại thành một số nhóm chính: bố cục (layout), khoảng cách (spacing), định dạng văn bản (typography), màu sắc (colors), và đường viền (borders), v.v. Việc hiểu cách sử dụng các nhóm này là chìa khóa để thành thạo Tailwind CSS.

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%

Layout và Box Model

Tailwind cung cấp một bộ các lớp (classes) đầy đủ để kiểm soát cách các phần tử được hiển thị, định vị, điều chỉnh kích thước và cấu hình theo mô hình khung (box model). Ví dụ, bạn có thể sử dụng các lớp này để… <code>flex</code><code>grid</code> Để tạo ra các container với bố cục linh hoạt (elastic) hoặc bố cục lưới (grid), hãy sử dụng công cụ tương ứng. <code>w-{size}</code><code>h-{size}</code> Hãy thực hiện việc thiết lập kích thước chiều rộng và chiều cao; trong đó, thuộc tính `size` có thể chứa các giá trị số (tính theo đơn vị `rem`), phân số, hoặc tỷ lệ phần trăm. Ví dụ: <code>w-64</code> Điều này có nghĩa là độ rộng được định nghĩa là 16 đơn vị “rem”.<code>w-1/2</code> Điều này có nghĩa là chiều rộng là 50%.

Về mô hình hộp (box model), phần padding được sử dụng để tạo khoảng trống bên trong khối nội dung. <code>p-{size}</code>(padding) và sử dụng margin bên ngoài <code>m-{size}</code>(Ví dụ: margin.) <code>p-4</code> Điều này có nghĩa là độ rộng của đường viền (padding) xung quanh sẽ là 1 rem.<code>mt-2</code> Điều này có nghĩa là độ rộng của đường viền bên ngoài (margin) được đặt thành 0.5 rem.

Thiết kế đáp ứng

Hệ thống điểm phân chia đáp ứng mặc định của Tailwind được thiết kế theo nguyên tắc ưu tiên cho thiết bị di động. Các lớp không có tiền tố áp dụng cho mọi loại màn hình, trong khi các lớp có tiền tố (ví dụ:…) chỉ áp dụng cho những loại màn hình cụ thể được chỉ định bởi tiền <code>sm:</code><code>md:</code><code>lg:</code><code>xl:</code><code>2xl:</code>Nó sẽ áp dụng cho toàn bộ nội dung trên màn hình tại điểm dừng đó trở lên. Ví dụ, đoạn mã dưới đây tạo ra một bố cục trong đó các thành phần được xếp chồng lên nhau trên điện thoại, nhưng được hiển thị song song trên màn hình có kích thước trung bình.

Đọc thêm Hướng dẫn toàn diện về Tailwind CSS: Phát triển hiệu quả với khung CSS hiện đại từ cơ bản đến thực hành

<div class="flex flex-col md:flex-row">
  <div class="p-4 md:w-1/2">Nội dung bên trái</div>
  <div class="p-4 md:w-1/2">Nội dung bên phải</div>
</div>

Style and Interaction

Các lớp màu sắc rất trực quan; định dạng của chúng là… <code>{property}-{color}-{shade}</code>Ví dụ: <code>bg-blue-500</code> Điều này có nghĩa là màu nền sẽ là màu xanh dương với độ sáng (gam màu) 500.<code>text-gray-800</code> Điều này có nghĩa là màu chữ sẽ là màu xám với độ sáng (gam màu) 800. Tailwind cung cấp sẵn một bảng màu được thiết kế rất tỉ mỉ.

Các trạng thái như “hiển thị khi con trỏ được di chuyển qua” (hover), “được tô sáng khi nhận sự chú ý” (focus), v.v. có thể được thiết lập bằng cách sử dụng các tiền tố (prefixes). Ví dụ: <code>hover:bg-blue-700</code> Điều này có nghĩa là khi con trỏ chuột được di chuyển đến trên đối tượng cụ thể, màu nền sẽ chuyển thành màu xanh dương (mã màu: #700). Bạn có thể trực tiếp định nghĩa các trạng thái tương tác này trong HTML mà không cần phải viết thêm mã CSS.

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

Tính năng nâng cao và tùy chỉnh

Mặc dù Tailwind được thiết kế để sử dụng ngay lập tức sau khi cài đặt, sức mạnh thực sự của nó nằm ở mức độ tùy chỉnh cao. Bạn có thể tùy chỉnh hệ thống thiết kế một cách sâu rộng thông qua các tệp cấu hình, hoặc sử dụng lệnh @layer để tạo ra các lớp thành phần có thể được tái sử dụng.

Token thiết kế tùy chỉnh

Tất cả các quyết định thiết kế, như màu sắc, khoảng cách, phông chữ, điểm đứt (breakpoints), v.v., đều được tập trung lại ở một nơi. tailwind.config.js phần theme Một phần của hệ thống cho phép bạn dễ dàng mở rộng hoặc thay thế các giá trị mặc định. Ví dụ, nếu bạn muốn thêm một màu sắc của thương hiệu tùy chỉnh, bạn có thể làm như sau:

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        'brand': '#0ea5e9',
      },
      spacing: {
        '128': '32rem',
      }
    },
  },
}

Bây giờ, bạn có thể sử dụng nó trong dự án của mình rồi. <code>bg-brand</code><code>w-128</code> Đây chính là loại lớp (class) mà chúng ta đang cần. Cách tiếp cận này đảm bảo rằng thiết kế tùy chỉnh của bạn có thể được tích hợp một cách hoàn hảo vào hệ thống các lớp hữu ích của Tailwind CSS.

Trích xuất lớp thành phần

Mặc dù nguyên tắc “Tính hữu dụng là ưu tiên cao nhất” khuyến khích việc kết hợp các lớp (classes) trực tiếp trong HTML, nhưng đối với những thành phần phức tạp xuất hiện nhiều lần trong dự án (chẳng hạn như các nút có phong cách thiết kế nhất định), việc viết lại nhiều lần một chuỗi tên lớp dài sẽ làm giảm tính dễ bảo trì của mã nguồn. Tailwind cung cấ @layer components Đây là hướng dẫn để giải quyết vấn đề này: Bạn có thể định nghĩa các lớp thành phần có thể tái sử dụng trong tệp CSS chính của mình.

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

@layer components {
  .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;
  }
}

Ở đây,@apply Lệnh này sẽ “áp dụng” một loạt các kiểu dáng hữu ích (styles) vào đối tượng mới. .btn-primary Trên lớp (class). Sau đó, bạn có thể sử dụng nó một cách đơn giản trong HTML. <code>class="btn-primary"</code>Điều này kết hợp được sự linh hoạt của các công cụ hữu ích với tính tái sử dụng của các lớp CSS truyền thống.

Sử dụng hệ sinh thái các plugin

Tailwind CSS sở hữu một hệ sinh thái plugin phong phú, cho phép thêm các lớp (classes), thành phần (components) hoặc biến thể (variants) mới vào thiết kế. Ví dụ, những plugin được cung cấp chính thức bởi nhà phát triển Tailwind… @tailwindcss/forms Các tiện ích mở rộng (plugins) cung cấp những kiểu dáng mặc định tốt hơn cho các phần tử biểu mẫu (form elements).@tailwindcss/typography The plugin provides a certain feature or functionality. prose Các công cụ thuộc loại này có thể giúp làm đẹp nhanh chóng nội dung HTML được tạo ra bởi Markdown hoặc các hệ thống quản trị nội dung (CMS). Sau khi được cài đặt thông qua npm, bạn chỉ cần sử dụng các tùy chọn trong tệp cấu hình để điều chỉnh chúng phù hợp với nhu cầu của mình. plugins Chỉ cần đưa vào mảng.

Tóm lại

Tailwind CSS đã thay đổi hoàn toàn cách các nhà phát triển viết mã CSS nhờ vào phương pháp luận sử dụng các lớp (classes) được thiết kế theo nguyên tắc “tính hữu dụng là ưu tiên hàng đầu”. Bằng cách cung cấp một hệ thống thiết kế hoàn chỉnh và nhất quán, Tailwind giúp nâng cao đáng kể hiệu quả và tính nhất quán trong quá trình phát triển giao diện người dùng (UI). Từ việc cài đặt và thiết lập đơn giản, đến việc sử dụng linh hoạt các lớp cốt lõi, và sau đó là khả năng tùy chỉnh sâu rộng thông qua các tệp cấu hình và lệnh, Tailwind vừa mang lại những tính năng mạnh mẽ vừa đảm bảo trải nghiệm phát triển tuyệt vời cho người dùng. Nó khuyến khích các nhà phát triển xây dựng thiết kế trực tiếp trong ngôn ngữ mã nguồn, giảm bớt sự cần thiết phải thay đổi bối cảnh (context switching), đồng thời sử dụng công nghệ Purge để giải quyết vấn đề về kích thước tệp mã nguồn sau khi biên dịch. Dù là cho mục đích phát triển nguyên mẫu nhanh chóng hay xây dựng các ứng dụng quy mô lớn, Tailwind CSS đều là một công cụ mạnh mẽ và hiện đại.

FAQ 常见问题

Liệu Tailwind CSS có làm cho mã HTML trở nên phức tạp và nặng nề hơn không?

Đúng vậy, sau khi sử dụng Tailwind CSS, số lượng tên lớp (class names) trong HTML sẽ tăng lên và có vẻ như chúng trở nên phức tạp hơn. Tuy nhiên, điều này thường được coi là một bước tích cực, bởi vì nó giúp chuyển trọng tâm quản lý kiểu dáng (styles) từ các tệp CSS sang các mẫu HTML (HTML templates), từ đó đơn giản hóa cấu trúc tổng thể của dự án.

Quan trọng hơn, quy trình xây dựng sản xuất của Tailwind sử dụng kỹ thuật “tree-shaking”, chỉ giữ lại các lớp bạn thực sự sử dụng, cuối cùng tạo ra tệp CSS thường nhỏ hơn nhiều so với viết tay hoặc sử dụng CSS của framework truyền thống. Do đó, sự “phình to” nhẹ của HTML được đổi lấy CSS nhỏ hơn, hiệu quả hơn và trải nghiệm phát triển tốt hơn.

Làm thế nào để ghi đè hoặc thiết lập lại các kiểu dáng mặc định của Tailwind CSS?

Tailwind thông qua @tailwind base Chúng tôi đã áp dụng một bộ kiểu dáng “kiểm tra trước” (pre-check styles) nhằm khắc phục sự khác biệt về kiểu dáng mặc định giữa các trình duyệt. Nếu bạn cần thêm hoặc thay đổi một số kiểu dáng cơ bản ở cấp độ toàn hệ thống (toàn trang web), bạn có thể làm điều đó trong tệp CSS của mình. @tailwind base Sau đó, trước các lớp khác, hãy sử dụng CSS tiêu chuẩn để viết mã.

Bạn cũng có thể thực hiện điều đó thông qua… tailwind.config.js trong tệp corePlugins Cấu hình để hoàn toàn vô hiệu hóa việc chèn các kiểu dáng cơ bản (basic styles) vào trang web. Đối với việc thay đổi kiểu dáng ở cấp độ thành phần (component-level style overrides), cách được khuyến nghị nhất là sử dụng kết hợp các lớp (classes) có tính chất cụ thể và hữu dụng hơn, hoặc áp @layer components Tạo một lớp tùy chỉnh có mức độ ưu tiên cao hơn.

Tailwind CSS phù hợp để sử dụng với những framework JavaScript nào?

Tailwind CSS là một thư viện thiết kế đồ họa không phụ thuộc vào bất kỳ framework nào, và có thể tích hợp hoàn hảo với mọi framework hoặc thư viện JavaScript hiện đại như React, Vue.js, Angular, Svelte, v.v. Các tên lớp (class names) trong Tailwind CSS chỉ là những chuỗi ký tự, do đó chúng có thể dễ dàng được kết hợp với ngôn ngữ thiết kế giao diện (template syntax) hoặc hệ thống component của các framework đó.

Nhiều cộng đồng phát triển framework cũng cung cấp thêm các công cụ tích hợp chuyên sâu hoặc các tùy chọn được thiết lập sẵn (presets). Ví dụ, trong React, bạn có thể kết hợp sử dụng các công cụ như… clsxclassnames Những thư viện như vậy cho phép kết hợp tên lớp một cách có điều kiện, giúp việc xử lý các kiểu dáng động trở nên tinh tế và linh hoạt hơn nhiều.

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?

Việc đảm bảo tính nhất quán chủ yếu dựa vào hệ thống thiết kế tích hợp sẵn của Tailwind (chẳng hạn như các thang đo khoảng cách, bảng màu) và các tệp cấu hình. Cả nhóm nên cùng nhau bảo trì các tệp cấu hình trong thư mục gốc của dự án. tailwind.config.js Các tệp tin chứa tất cả các màu sắc, khoảng cách, phông chữ được tùy chỉnh nên được định nghĩa ở đây, để đảm bảo rằng tất cả các thành viên sử dụng cùng một bộ thiết kế (design tokens) nhất quán.

Đối với các kiểu giao diện người dùng (UI) phổ biến, việc sử dụng chúng được khuyến khích. @layer components Hãy trích xuất các thành phần có thể tái sử dụng (chẳng hạn như nút bấm, thẻ thông tin) và chia sẻ chúng trong nhóm. Ngoài ra, bạn có thể sử dụng các công cụ chỉnh sửa như Tailwind CSS IntelliSense để cung cấp tính năng tự động hoàn thành mã và xem trước kết quả, điều này không chỉ giúp tăng hiệu suất mà còn giảm thiểu sự không nhất quán do lỗi chính tả. Hãy xây dựng những quy tắc kiểm tra mã đơn giản, đặc biệt chú ý đến cách thức triển khai các phong cách thiết kế, nhằm duy trì tính nhất quán trong mã nguồn.