Thành thạo Tailwind CSS: Hướng dẫn đầy đủ từ cơ bản đến xây dựng giao diện hiện đại, responsive

Đọc trong 3 phút
2026-03-13
2,229
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), cung cấp một loạt các lớp hữu ích (utility classes) ở cấp độ thấp, giúp các nhà phát triển có thể xây dựng bất kỳ thiết kế nào một cách nhanh chóng trực tiếp trong HTML. Khác với các framework như Bootstrap – 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ó kiểu dáng cố định, mà thay vào đó cung cấp một bộ công cụ để xây dựng thiết kế tùy chỉnh. Triết lý cốt lõi của Tailwind là “những ràng buộc tạo nên sự tự do” (constraints create freedom): bằng cách đặt ra những quy tắc thiết kế cụ thể (về khoảng cách, màu sắc, kích thước phông chữ, v.v.), framework này giúp giới hạn các lựa chọn của nhà phát triển, từ đó nâng cao hiệu quả phát triển và tính nhất quán trong thiết kế.

Khi sử dụng Tailwind CSS, bạn không cần phải… style.css Thay vì viết quá nhiều mã CSS tùy chỉnh trực tiếp trong tệp tin, người ta thường sử dụng phương pháp kết hợp các đoạn mã CSS đã có sẵn lại với nhau. flexpt-4text-centerbg-red-500 Loại lớp (class) này được sử dụng để thiết kế trang web. Phương pháp này giúp giảm đáng kể việc chuyển đổi giữa các ngữ cảnh (context switching) trong quá trình phát triển, bởi vì phong cách trình bày (style) được kết hợp chặt chẽ với cấu trúc trang (HTML). Đồng thời, bằng cách loại bỏ những phong cách không được sử dụng, các tệp CSS được tạo ra có kích thước rất nhỏ và sẵn sàng để s

Các khái niệm cốt lõi và cấu hình cơ bản

Để bắt đầu sử dụng Tailwind CSS, trước tiên bạn cần hiểu rõ một số khái niệm cốt lõi của nó và hoàn tất việc cấu hình dự án.

Cách thức làm việc theo hướng ứng dụng thực tế (practical work approach)

Các lớp hữu ích trong Tailwind trực tiếp tương ứng với các thuộc tính CSS. Ví dụ,mt-4 tương ứng với margin-top: 1rem;text-blue-600 tương ứng với color: #2563eb;Những tên lớp này có tính chất thích ứng với các thiết bị khác nhau (tính chất “responsive”). Bạn có thể sử dụng các tiền tố đặc biệt (prefixes) để đánh dấu các điểm kiểm soát (breakpoints) trong quá trình phát triển phần mềm. md:lg:Bạn có thể sử dụng các kích thước màn hình khác nhau để chỉ định các kiểu dáng (styles) phù hợp. Ví dụ:md:flex Dành cho các ứng dụng được sử dụng trên màn hình có kích thước trung bình hoặc lớn hơn. display: flex;

Cài đặt và cấu hình ban đầu

Thông thường, Tailwind được cài đặt thông qua npm hoặc yarn, và hoạt động như một plugin của PostCSS. Trước tiên, hãy khởi tạo dự án tại thư mục gốc và cài đặt các phụ thuộc cần thiết:

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

Điều này sẽ tạo ra một tệp có tên là… tailwind.config.js Đó là tệp cấu hình. Bạn cần chỉ định đường dẫn đến tệp mẫu trong tệp này, để Tailwind có thể quét và tạo ra các kiểu dáng tương ứng.

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

Tiếp theo, trong tệp CSS chính của bạn (ví dụ: src/input.cssCách để nhập các lệnh của Tailwind vào (tên tệp không được cung cấp trong văn bản gốc) là như sau:

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

Cuối cùng, bằng cách xây dựng các lệnh (như…) npx tailwindcss -i ./src/input.css -o ./dist/output.css --watchĐược sử dụng để biên dịch và tạo ra sản phẩm cuối cùng dùng cho mục đích sản xuất. output.css Tệp.

Xây dựng bố cục đáp ứng

Tailwind sử dụng chiến lược thiết kế phản ứng (responsive design) với ưu tiên dành cho thiết bị di động. Các lớp (classes) có sẵn trong Tailwind được thiết kế dành riêng cho thiết bị di động; để áp dụng chúng cho các loại màn hình lớn hơn, bạn cần thêm tiền tố (prefix) vào tên của các lớp đó.

Sử dụng tiền tố dừng (breakpoint prefix)

Giao diện này được tích hợp sẵn năm điểm dừng (breakpoints):sm (640px)md (768px)lg (1024px)xl (1280px) và 2xl (1536px). Để tạo một bố cục thích ứng với các thiết bị khác nhau, bạn chỉ cần thêm tên điểm đánh dấu ( breakpoint) và dấu hai chấm (:) trước tên lớp. Ví dụ, một container lưới (grid container) thích ứng đơn giản:

<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4">
  <!-- 子元素 -->
  <div class="bg-gray-200 p-4">Nội dung khối 1</div>
  <div class="bg-gray-200 p-4">Nội dung khối 2</div>
  <div class="bg-gray-200 p-4">Nội dung khối 3</div>
  <div class="bg-gray-200 p-4">Nội dung khối 4</div>
</div>

Đoạn mã trên hiển thị một cột trên thiết bị di động, hai cột trên màn hình cỡ vừa, và bốn cột trên màn hình lớn.

Thực hành với các mẫu bố cục phổ biến

Bằng cách sử dụng các lớp hữu ích của Flexbox và Grid, bạn có thể dễ dàng thực hiện các bố cục phổ biến. Ví dụ, một bố cục tiêu đề trang (header layout) điển hình:

<header class="flex flex-col md:flex-row justify-between items-center p-6 bg-white shadow-md">
  <div class="text-2xl font-bold text-blue-700">Thương hiệu của tôi</div>
  <nav class="mt-4 md:mt-0">
    <ul class="flex space-x-6">
      <li><a href="#" class="text-gray-600 hover:text-blue-500">Trang chủ</a></li>
      <li><a href="#" class="text-gray-600 hover:text-blue-500">Về</a></li>
      <li><a href="#" class="text-gray-600 hover:text-blue-500">Liên hệ</a></li>
    </ul>
  </nav>
</header>

Ở đây sử dụng flex-colmd:flex-row Thực hiện việc hiển thị thanh điều hướng theo dạng xếp chồng thẳng đứng trên thiết bị di động và theo dạng xếp ngang trên thiết bị máy tính để bà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%

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

Mặc dù Tailwind có thể sử dụng ngay sau khi được cài đặt, sức mạnh thực sự của nó nằm ở khả năng tùy chỉnh cao.

Hệ thống thiết kế mở rộng (Extended Design System)

Bạn có thể dễ dàng mở rộng chủ đề mặc định trong phần tailwind.config.js phần theme.extend Một số giá trị của chủ đề mặc định có thể được dễ dàng mở rộng. Ví dụ, bạn có thể thêm màu sắc, phông chữ hoặc khoảng cách theo ý muốn:

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        'brand-primary': '#1a365d',
        'brand-accent': '#ed8936',
      },
      fontFamily: {
        'custom-sans': ['"Inter"', 'sans-serif'],
      },
      spacing: {
        '128': '32rem',
      }
    },
  },
}

Sau đó, bạn có thể sử dụng những công cụ hoặc thành phần như trong dự án của mình. text-brand-primaryfont-custom-sans Loại như vậy rồi.

Extracting components and using plugins

Để tránh việc phải lặp lại việc viết các danh sách lớp (class) dài dòng trong HTML, Tailwind hỗ trợ việc sử dụng các công cụ hoặc cơ chế nhất định để tự động hóa quá trình này. @apply Các lệnh trong CSS được sử dụng để trích xuất các lớp thành phần có thể được tái sử dụng. Ví dụ, để tạo một nút tùy chỉnh:

/* 在你的 CSS 文件中 */
.btn-primary {
  @apply py-2 px-4 bg-blue-600 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;
}

Sau đó, hãy sử dụng nó trong HTML. <button class="btn-primary">点击</button>Ngoài ra, còn có rất nhiều plugin chính thức và từ cộng đồng (chẳng hạn như plugin dành cho biểu mẫu). @tailwindcss/formsNó cho phép thêm các kiểu dáng chuẩn hóa một cách nhanh chóng cho các phần tử cụ thể.

Tối ưu hóa và xây dựng sản phẩm (Optimization and Production Building)

Để đạt được hiệu suất tối ưu, Tailwind sẽ sử dụng PurgeCSS trong quá trình xây dựng sản phẩm (production build); công cụ này hiện đã được tích hợp sẵn vào hệ thống của Tailwind. content (Đang trong quá trình cấu hình…) để loại bỏ tất cả các kiểu dáng (styles) không được sử dụng. Hãy đảm bảo rằng… tailwind.config.js trong content Con đường (path) được thiết lập một cách chính xác, trỏ đến tất cả các tệp tin có thể sử dụng các lớp (classes) từ thư viện Tailwind (như HTML, JSX, các mẫu Vue). Tệp CSS cuối cùng sẽ chỉ chứa những lớp mà bạn thực sự đã sử dụng, và kích thước của nó thường chỉ vài KB thô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

Thực hành: Xây dựng một thành phần thẻ (card component)

Hãy cùng kết hợp những kiến thức đã học để xây dựng một thành phần thẻ (card component) hiện đại và có khả năng thích ứng với nhiều loại thiết bị khác nhau (responsive design).

<div class="max-w-sm rounded-xl overflow-hidden shadow-lg bg-white mx-auto my-8">
  <!-- 卡片图片 -->
  <div class="relative pb-2/3"> <!-- 使用宽高比容器 -->
    <img class="absolute h-full w-full object-cover" src="https://picsum.photos/400/300" alt="Hình ảnh thẻ">
    <div class="absolute top-4 right-4">
      <span class="bg-red-500 text-white text-xs font-bold px-2 py-1 rounded-full">phổ biến</span>
    </div>
  </div>
  <!-- 卡片内容 -->
  <div class="px-6 py-4">
    <div class="font-bold text-xl text-gray-800 mb-2">Đây là một tiêu đề tuyệt vời.</div>
    <p class="text-gray-600 text-base">
      Đây là nội dung mô tả của tấm thẻ (card). Tailwind CSS giúp việc thêm phong cách (style) cho các thành phần như thế này trở nên nhanh chóng và trực quan hơn.
    </p>
  </div>
  <!-- 卡片底部 -->
  <div class="px-6 pt-4 pb-6 flex flex-wrap items-center justify-between">
    <span class="inline-block bg-gray-100 text-gray-700 text-sm font-medium px-3 py-1 rounded-full">Nhãn #</span>
    <button class="mt-2 md:mt-0 bg-blue-500 hover:bg-blue-700 text-white font-medium py-2 px-4 rounded transition duration-300">
      Tìm hiểu thêm
    </button>
  </div>
</div>

Thành phần thẻ này hiển thị sự kết hợp giữa khung chứa hình ảnh, các thẻ mô tả, tiêu đề, nội dung mô tả chi tiết, các nút thẻ và các nút thao tác. Nhờ vào các lớp thiết kế hữu ích, chúng ta có thể dễ dàng áp dụng các hiệu ứng như góc tròn, bóng đổ, khoảng cách giữa các thành phần, màu sắc, cũng như thiết kế thích ứng với thiết bịtransitionduration-300 Loại này đã thêm hiệu ứng hoạt ảnh chuyển màu mượt mà khi người dùng di chuột lên nút (hiệu ứng “hover”).

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 sử dụng các lớp (classes) có tính ứng dụng cao và được sắp xếp theo thứ tự ưu tiên cụ thể. Nó di chuyển quá trình quyết định về thiết kế từ các bảng định dạng (style sheets) sang các phần tử mã nguồn (markup elements), từ đó giúp tăng tốc độ phát triển và đảm bảo tính nhất quán trong thiết kế. Từ việc cấu hình, tạo bố cục thích ứng với các thiết bị khác nhau, đến việc tùy chỉnh sâu rộng và tối ưu hóa hiệu năng, Tailwind cung cấp một bộ giải pháp toàn diện và hiệu quả. Mặc dù ban đầu cần phải học thuộc lòng tên các lớp, nhưng những lợi ích mà nó mang lại về tốc độ phát triển, khả năng bảo trì và hiệu suất sản phẩm cuối cùng là rất đáng kể. Việc nắm vững Tailwind CSS đồng nghĩa với việc bạn sở hữu một công cụ mạnh mẽ để xây dựng các giao diện người dùng hiện đại, thích ứng tốt với mọi thiết bị và có hiệu suất cao.

FAQ 常见问题

Tệp CSS được tạo bởi Tailwind CSS có lớn không?

Không. Trong chế độ phát triển (development mode), Tailwind sẽ tạo ra một tệp CSS đầy đủ chứa tất cả các lớp (classes), và kích thước của tệp này khá lớn. Tuy nhiên, khi thực hiện quá trình xây dựng sản phẩm (production build), Tailwind sẽ tự động loại bỏ những phần không cần thiết bằng cách quét nội dung bạn đã chỉ định. tailwind.config.jscontent Tất cả các tệp mẫu được chỉ định trong trường đều được xử lý để loại bỏ chính xác những lớp CSS không được sử dụng. Tệp CSS cuối cùng được tạo ra thường chỉ có kích thước từ vài KB đến vài chục KB, rất gọn nhẹ.

Trong các dự án nhóm, làm thế nào để đảm bảo tính nhất quán của mã nguồn viết bằng Tailwind CSS?

Tailwind CSS tự nhiên cung cấp những quy định về tính nhất quán cơ bản thông qua hệ thống thiết kế của nó (chẳng hạn như tỷ lệ khoảng cách giữa các thành phần trên trang, bảng màu). Đối với các dự án nhóm, khuyến nghị nên:
1. Tận dụng triệt để và cùng nhau bảo vệ nguồn lực hiện có. tailwind.config.js Tệp tin này định nghĩa các mã thiết kế đặc biệt cho dự án (chẳng hạn như màu sắc thương hiệu, phông chữ).
2. Đối với những tổ hợp kiểu dáng phức tạp được sử dụng thường xuyên, hãy sử dụng… @apply Các lệnh hoặc yêu cầu được trích xuất thành các lớp thành phần (components), hoặc trong các framework như React/Vue, chúng được biến thành các thành phần giao diện (UI components) có thể tái sử dụng.
3. Có thể tích hợp Prettier và sử dụng các plugin chính thức của nó. prettier-plugin-tailwindcssTự động sắp xếp các tên lớp theo thứ tự nhất định, nhằm đồng nhất phong cách mã nguồn.

Sự khác biệt giữa Tailwind CSS và kiểu dáng được nhúng (inline styles) là gì?

Có sự khác biệt cơ bản giữa hai cái này. Các lớp hữu ích (utility classes) trong Tailwind không phải là kiểu định dạng đẹp (style) được đặt trực tiếp vào mã nguồn (inline styles), mà được xây dựng dựa trên các quy tắc và giới hạn của hệ thống thiết kế (design system).
1. Thiết kế thích ứng: Các lớp trong Tailwind CSS cho phép thêm các tiền tố đặc biệt (gọi là “breakpoint prefixes”) một cách dễ dàng, nhằm điều chỉnh giao diện của trang web theo kích thước màn hình khác nhau. md:blockVà điều này không thể được thực hiện bằng cách sử dụng kiểu dáng nội tuyến (inline styles).
2. Các lớp ảo (pseudo-classes) liên quan đến trạng thái: Tailwind CSS hỗ trợ điều này. hover:focus: Các tiền tố như vậy không thể được sử dụng với kiểu dáng được định nghĩa nội tuyến (inline styles).
3. Tính nhất quán trong thiết kế: Các lớp trong Tailwind được xây dựng dựa trên các giá trị được định nghĩa trước (ví dụ:…) mt-4 Tương ứng với 1rem, điều này giúp tránh việc sử dụng các giá trị ngẫu nhiên, đồng thời đảm bảo tính nhất quán về mặt thẩm mỹ (trải nghiệm người dùng).
4. Tính toàn vẹn về chức năng: Nó có thể xử lý các tình huống như… flexgridsr-only(Dành riêng cho trình đọc màn hình) Những tính năng phức tạp như vậy không thể được thực hiện bằng cách sử dụng các kiểu dáng (styles) đơn giản được đặt trực tiếp vào mã nguồn (inline styles).

Có thể sử dụng Tailwind cùng với các framework CSS khác như Bootstrap không?

Mặc dù về mặt kỹ thuật điều đó là khả thi, nhưng chúng tôi khuyên bạn không nên làm vậy. Tailwind và Bootstrap là hai phong cách thiết kế hoàn toàn khác nhau: Tailwind ưu tiên sử dụng các lớp (classes) hữu dụng trong thiết kế, trong khi Bootstrap lại tập trung vào các thành phần (components) được xây dựng sẵn. Việc sử dụng cả hai cùng lúc có thể dẫn đến xung đột về kiểu dáng (styles), nhầm lẫn trong tên các lớp (class names), tăng đáng kể kích thước của các tập tin chứa mã nguồn (package sizes), và gây ra nhiều khó khăn trong việc bảo trì (maintenance). Bạn nên chọn một framework phù hợp dựa trên nhu cầu của dự án cũng như sở thích cá nhân hoặc của nhóm làm việc, và sau đó kiên trì sử dụng framework đó. Nếu bạn cần sử dụng một số thành phần có phong cách thiết kế của Bootstrap trong dự án được xây dựng bằng Tailwind, bạn có thể xem xét các thư viện thành phần dựa trên Tailwind như DaisyUI hoặc Headless UI.