10 mẹo CSS của Tailwind giúp bạn xây dựng giao diện web hiện đại, thanh lịch và hiệu quả

Đọc trong 2 phút
2026-03-14
1,997
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 đã thay đổi hoàn toàn quy trình phát triển front-end nhờ vào mô hình các lớp nguyên tử (atomic classes) tiện lợi của mình. Tuy nhiên, để tận dụng hết tiềm năng của nó, bạn không chỉ cần nhớ tên các lớp mà còn cần nắm vững một số kỹ thuật nâng cao. Bài viết này sẽ chia sẻ 10 mẹo hữu ích giúp bạn viết mã Tailwind ngắn gọn hơn, mạnh mẽ hơn và dễ bảo trì hơn, từ đó tạo ra những giao diện người dùng hiện đại vừa đẹp mắt vừa hiệu quả.

Nắm vững các lớp hàm cốt lõi và các biến thể của chúng.

Trọng tâm của Tailwind CSS nằm ở bộ sưu tập các lớp (classes) hữu ích và đa dạng cùng những biến thể trạng thái (state variations) được thiết kế một cách chính xác. Việc sử dụng thành thạo những tính năng cơ bản nhưng mạnh mẽ này chính là bước đầu tiên để nâng cao hiệu suất công việc.

Thiết kế đáp ứng và điểm ngắt

Tailwind sử dụng mô hình thiết kế thích ứng dựa trên nguyên tắc “di động được ưu tiên” (mobile-first). Điều này có nghĩa là các lớp (classes) không có tiền tố đặc biệt sẽ được áp dụng mặc định cho tất cả các thiết bị. <code>block</code>Các lớp không có tiền tố 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ỉ hoạt động trên những kích thước màn hình cụ thể. <code>md:block</code>Thì nó sẽ bắt đầu có hiệu lực từ điểm dừng đó. Việc sử dụng các điểm dừng một cách hợp lý có thể giúp xây dựng một bố cục linh hoạt (tức là bố cục có thể thích ứng với các điều kiện khác nhau).

Đọc thêm Hướng dẫn bắt đầu với Tailwind CSS: Xây dựng trang web hiện đại, đáp ứng từ con số không

Ví dụ, một phần tử có thể được xếp chồng lên nhau theo chiều dọc trên điện thoại, chuyển thành hai cột trên máy tính bảng, và chuyển thành bốn cột trên máy tính để bàn. Điều này có thể được thực hiện như sau:

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
<div class="flex flex-col md:flex-row lg:grid lg:grid-cols-4">
  <!-- 子元素 -->
</div>

Ứng dụng linh hoạt các biến thể trạng thái (Flexible application of state variants)

Các biến thể trạng thái (state variants) cho phép bạn áp dụng các kiểu dáng (styles) dựa trên hành động của người dùng hoặc trạng thái của các thành phần (elements) trên giao diện. Đây là yếu tố then chốt trong việc xây dựng các giao diện tương tác (interactive interfaces).

Các biến thể phổ biến bao gồm: <code>hover:</code><code>focus:</code><code>active:</code> Và cả những thứ được sử dụng cho các phần tử biểu mẫu (form elements). <code>disabled:</code><code>checked:</code>Chúng có thể được kết hợp một cách dễ dàng để tạo ra những phản hồi tương tác đa dạng và phong phú.

<button class="bg-blue-500 hover:bg-blue-700 focus:ring-2 focus:ring-blue-300 active:scale-95 transition-all">
  点击我
</button>

Đoạn mã này thêm vào các nút các hiệu ứng sau: màu sắc sẽ đậm hơn khi người dùng di chuột lên chúng (hiệu ứng “hover”), xuất hiện vòng sáng khi chúng nhận được sự chú ý (focus), và kích thước của nút sẽ giảm nhẹ khi được nhấn. Tất cả các hiệu ứng chuyển đổi diễn ra m

Nâng cao tổ chức và khả năng bảo trì của mã nguồn

Khi quy mô dự án mở rộng, danh sách các lớp (classes) trong HTML có thể trở nên dài dòng và khó quản lý. Những mẹo sau đây sẽ giúp bạn giữ cho mã nguồn của mình gọn gàng và dễ đọc hơn.

Đọc thêm Tìm hiểu sâu về Tailwind CSS: Hướng dẫn thực tế từ cơ bản đến nâng cao

Sử dụng @apply để trích xuất các kiểu dáng (styles) trùng lặp.

Khi cùng một nhóm lớp hữu dụng xuất hiện lặp đi lặp lại ở nhiều nơi khác nhau, bạn có thể sử dụng… <code>@apply</code> Các lệnh trong CSS được sử dụng để tạo ra các lớp thành phần tùy chỉnh. Điều này tương tự như việc tạo ra các đoạn mã stíl có thể được sử dụng lại nhiều lần, giúp duy trì tính nhất quán trong thiết kế.

Thêm vào tệp CSS của bạn (ví dụ main.cssTrong nội dung được cung cấp:

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

@layer components {
  .btn-primary {
    @apply px-4 py-2 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 transition-colors;
  }
}

Sau đó, trong HTML, bạn chỉ cần sử dụng… <code>class=”btn-primary”</code> vào phần tử HTML.

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%

Sử dụng các tiện ích mở rộng (plugins) và tính năng nhận diện thông minh (intelligent recognition) của IDE.

Việc cài đặt các tiện ích mở rộng (plugin) cho môi trường phát triển tích hợp (IDE) như “Tailwind CSS IntelliSense” là điều cực kỳ cần thiết. Những tiện ích này không chỉ cung cấp chức năng tự động hoàn thành câu (auto-completion), hiển thị mã nguồn bằng màu sắc (syntax highlighting), và gợi ý thông tin khi bạn di chuột lên các thành phần trong mã (hover hints) mà còn giúp bạn làm việc hiệu qu tailwind.config.js Nó sẽ đọc cấu hình tùy chỉnh của bạn từ tệp, giúp giảm đáng kể thời gian cần thiết để tìm hiểu tài liệu hướng dẫn và tránh những lỗi chính tả.

Kết hợp và tách các chuỗi kiểu lớp một cách có chiến lược

Đối với các lớp được tạo ra một cách động, việc ghép các chuỗi ký tự thủ công rất dễ gây ra lỗi. Bạn có thể sử dụng các công cụ như… clsxclassnames Hoặc theo hướng dẫn chính thức của Tailwind. tailwind-merge Những thư viện như vậy rất hữu ích trong việc tự động hợp nhất, loại bỏ dữ liệu trùng lặp và sắp xếp các tên lớp một cách thông minh, đặc biệt là khi xử lý các lớp có điều kiện (classes with conditions).

import { clsx } from ‘clsx’;
import { twMerge } from ‘tailwind-merge’;

function Button({ isActive, children }) {
  const className = twMerge(
    clsx(
      ‘px-4 py-2 rounded-md’,
      isActive ? ‘bg-blue-600 text-white’ : ‘bg-gray-200 text-gray-800’
    )
  );
  return <button className={className}>{children}</button>;
}

Cấu hình sâu rộng và tùy chỉnh

Cấu hình mặc định của Tailwind rất toàn diện, nhưng bằng cách tùy chỉnh, bạn có thể làm cho nó phù hợp hoàn hảo với thương hiệu và hệ thống thiết kế của mình.

Đọc thêm Những ưu điểm cốt lõi và triết lý thiết kế của Tailwind CSS

Chủ đề mở rộng và màu sắc tùy chỉnh

tailwind.config.js phần <code>theme.extend</code> Trong một số trường hợp, bạn có thể thêm giá trị mới hoặc ghi đè giá trị mặc định mà không ảnh hưởng đến chức năng của chúng.
Đây là những phần liên quan đến việc định nghĩa màu sắc của thương hiệu, điều chỉnh tỷ lệ khoảng cách giữa các thành phần trên giao diện, hoặc thêm các bộ phông chữ tùy chỉnh. Đây được coi là những thực hành tốt nhất trong quá trình thiết kế và phát triển sản phẩm.

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      colors: {
        ‘brand’: ‘#1a73e8’,
        ‘brand-dark’: ‘#0d47a1’,
      },
      spacing: {
        ‘128’: ‘32rem’,
      }
    }
  }
}

Tạo một lớp hữu ích tùy chỉnh

Đôi khi, bạn có thể cần một thuộc tính CSS cụ thể mà Tailwind chưa hỗ trợ. Bạn có thể sử dụng các plugin hoặc chỉnh sửa tập tin cấu hình (configuration file) của Tailwind để thêm thuộc tính đó vào. <code>theme.extend</code> Bạn có thể thêm nó trực tiếp vào đó.

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ụ, hãy thêm một cột mẫu lưới tùy chỉnh:

// tailwind.config.js
module.exports = {
  theme: {
    extend: {
      gridTemplateColumns: {
        ‘fluid’: ‘repeat(auto-fit, minmax(250px, 1fr))’,
      }
    }
  }
}

Bây giờ bạn có thể sử dụng nó trong HTML rồi. <code>grid-cols-fluid</code> rồi.

Kỹ thuật bố trí nâng cao và hiệu ứng thị giác

Những kỹ thuật này có thể giúp bạn giải quyết các vấn đề về bố cục phức tạp hơn và tạo ra những hiệu ứng thị giác tinh xảo.

Sử dụng các lớp container để thích ứng với kích thước màn hình

Tailwind… <code>container</code> Lớp sẽ tự động thiết lập một giá trị cho thuộc tính đó. max-width Để phù hợp với điểm dừng hiện tại, bạn có thể tự định cấu trong cài đặt. <code>screens</code> Điều này nhằm thay đổi hành vi của nó, sao cho nó có các độ lệch nội dung (padding) khác nhau tại các điểm dừng (breakpoints) khác nhau.

// tailwind.config.js
module.exports = {
  theme: {
    container: {
      padding: ‘2rem’,
      center: true,
    },
  }
}

Cách sử dụng hiệu quả các giá trị âm và các đơn vị đo trong viewport

Tailwind CSS hỗ trợ việc sử dụng các giá trị margin âm (negative margins). <code>-m-4</code>Điều này rất hữu ích cho việc tạo ra các phần tử chồng lấn, làm rộng nền hoặc các hiệu ứng thị giác khác. Khi kết hợp với các lớp đơn vị viewport (như…) <code>h-screen</code>, <code>min-h-[50vh]</code>Bạn có thể dễ dàng tạo ra những nội dung tràn ngập toàn bộ khung hiển thị (viewport) hoặc những khu vực có tỷ lệ cụ thể.

<div class="“relative" h-screen”>
  <div class="“absolute" inset-0 bg-gradient-to-r from-purple-500 to-pink-500”></div>
  <div class="“relative" z-10 -mt-20 mx-auto container bg-white rounded-lg shadow-xl p-8”>
    Thẻ này sẽ trùng lặp với nền.
  </div>
</div>

Hỗ trợ khám phá bất kỳ giá trị nào

Khi hệ thống thiết kế Tailwind không thể đáp ứng một giá trị pixel rất cụ thể, bạn có thể sử dụng cú pháp dấu ngoặc vuông để chèn bất kỳ giá trị nào bạn muốn. Tính năng này rất mạnh mẽ, nhưng cần được sử dụng một cách thận trọng để tránh làm mất đi tính nhất quán trong thiết kế.

<div class="“top-[117px]" w-[calc(100%-1rem)] text-[#3a4567]”>
  <!-- 内容 -->
</div>

Tóm lại

Việc nắm vững Tailwind CSS không chỉ đơn thuần là học thuộc lòng danh sách các lớp (classes). Điều quan trọng hơn là phải hiểu sâu về các điểm đánh dấu (breakpoints) và các biến trạng thái (state variables) có tính phản ứng của nó, đồng thời tổ chức mã một cách có chiến lược (ví dụ: sử dụng các công <code>@apply</code> Bằng cách sử dụng các công cụ hợp nhất (merge tools), tùy chỉnh sâu rộng các khung (frameworks) để phù hợp với hệ thống thiết kế, và áp dụng các kỹ thuật bố trí nâng cao như sử dụng các container, giá trị âm, hoặc bất kỳ giá trị nào khác, bạn có thể nâng cao đáng kể hiệu quả phát triển và chất lượng mã nguồn. Khi tích hợp những kỹ thuật này vào quá trình phát triển hàng ngày, bạn sẽ có thể dễ dàng tạo ra những giao diện người dùng vừa đáp ứng các tiêu chuẩn thẩm mỹ hiện

FAQ 常见问题

Trong các dự án lớn, làm thế nào nếu tên lớp trong HTML quá dài?

Đối với các kiểu thiết kế của thành phần được lặp lại nhiều lần, rất khuyến nghị nên sử dụng (công cụ hoặc phương pháp nào đó để quản lý chúng một cách hiệu quả). <code>@apply</code> Các lệnh này nằm ở tầng thành phần (component layer) của CSS.@layer componentsTrong quá trình phân tích mã nguồn, cần trích xuất các lớp (classes) trừu tượng từ đó. Đối với các thành phần phức tạp hơn và có trạng thái (state), nên sử dụng các công cụ tổ chức mã nguồn dựa trên các framework front-end như React hoặc Vue để đóng gói chúng một cách có cấu trúc. Logic liên quan đến thiết kế giao diện (style) nên được tích hợp ngay bên trong các thành phần đó, và chỉ cung cấp nh props Giao diện (Interface).

Làm thế nào để đảm bảo các tên lớp (class names) trong Tailwind CSS mà nhóm sử dụng luôn nhất quán?

Trước hết, hãy xây dựng và tuân thủ một hướng dẫn sử dụng Tailwind trong nhóm. Sau đó, hãy tận dụng những công cụ và tính năng mà Tailwind cung cấp để nâng cao hiệu quả công việc. Prettier Các plugin (như…) prettier-plugin-tailwindcssViệc tự động sắp xếp và định dạng tên lớp (class names) sẽ giúp đảm bảo trật tự nhất quán trong mã nguồn. Cuối cùng, trong quá trình kiểm tra mã nguồn (code review), cần xem xét cách tổ chức các tên lớp cũng như mức độ dễ đọc của chúng như một tiêu chí quan tr

Liệu Tailwind CSS có làm tăng thêm kích thước của tệp CSS cuối cùng không?

Với cấu hình và quy trình xây dựng sản phẩm (production build) được thực hiện đúng cách, điều đó sẽ không xảy ra. Tailwind CSS được sử dụng để tạo ra giao diện web có tính linh hoạt và dễ bảo trì. PurgeCSS(Tích hợp sẵn trong các phiên bản V3 trở lên) Công cụ này sẽ quét các tệp nguồn của bạn và chỉ đóng gói những lớp (classes) thực sự được sử dụng vào tệp CSS cuối cùng. Điều này có nghĩa là, ngay cả khi bạn sử dụng hàng nghìn lớp hữu ích, tệp CSS tạo ra vẫn chỉ chứa những phần cần thiết cho dự án, thường có kích thước dưới 10KB.

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

Về mặt kỹ thuật thì hoàn toàn có thể, nhưng tôi khuyên bạn không nên làm vậy. Triết lý thiết kế và quy tắc đặt tên các lớp (classes) giữa hai framework này có những xung đột cơ bản; việc sử dụng chúng cùng lúc sẽ dẫn đến các vấn đề như xung đột về kiểu trình bày (style conflicts), sự mâu thuẫn trong cách thực hiện các chức năng (specificity conflicts), và làm tăng đáng kể kích thước của tệp mã nguồn (package size). Thực hành tốt nhất là áp dụng hoàn toàn Tailwind CSS cho các dự án mới hoặc các module đang được tái c