CSS Selector: Hướng dẫn chi tiết và phân loại từ A-Z (2026)

Trịnh Thị Ngọc Trịnh Thị Ngọc

Trong thế giới phát triển web, việc kiểm soát và định kiểu cho các phần tử HTML là yếu tố then chốt để tạo ra giao diện người dùng hấp dẫn và chuyên nghiệp. CSS selector đóng vai trò là công cụ đắc lực, giúp các nhà phát triển web "chỉ mặt gọi tên" chính xác những yếu tố cần áp dụng phong cách. Bài viết này sẽ đi sâu vào bản chất, phân loại và cách sử dụng hiệu quả các loại CSS selector, đặc biệt trong bối cảnh năm 2026.

CSS selector là gì? Là một mẫu chuỗi dùng để xác định các phần tử HTML mà bạn muốn áp dụng một tập hợp các quy tắc CSS. Hiểu và sử dụng thành thạo CSS selector giúp tối ưu hóa quá trình tạo kiểu và nâng cao hiệu suất website.

Tổng quan về các loại CSS selector

Về cơ bản, CSS selector được chia thành nhiều loại dựa trên cách chúng xác định phần tử mục tiêu. Mỗi loại có cú pháp và mục đích sử dụng riêng biệt, tạo nên sự linh hoạt trong việc thiết kế giao diện.

Phân loại các loại CSS selector phổ biến
Các loại CSS selector cơ bản và nâng cao cung cấp khả năng lựa chọn phần tử đa dạng

Theo các tài liệu tham khảo uy tín như CSS selector w3school, chúng ta có thể phân loại chúng thành các nhóm chính sau:

  • Simple selectors (Bộ chọn đơn giản): Bao gồm bộ chọn theo tên phần tử (element selector), bộ chọn theo ID (id selector), và bộ chọn theo lớp (class selector).
  • Combinator selectors (Bộ chọn kết hợp): Sử dụng để chọn các phần tử dựa trên mối quan hệ giữa chúng (ví dụ: con cháu, anh em).
  • Pseudo-class selectors (Bộ chọn giả lớp): Chọn phần tử dựa trên trạng thái của chúng (ví dụ: `:hover`, `:focus`, `:nth-child`).
  • Pseudo-elements selectors (Bộ chọn giả phần tử): Chọn và định kiểu một phần tử của phần tử đó (ví dụ: `::before`, `::after`, `::first-line`).
  • Attribute selectors (Bộ chọn thuộc tính): Chọn phần tử dựa trên sự tồn tại hoặc giá trị của một thuộc tính HTML.

Các loại bộ chọn đơn giản (Simple Selectors)

Đây là những bộ chọn cơ bản nhất, dễ dàng áp dụng và thường là điểm khởi đầu cho bất kỳ ai học CSS.

1. Element Selector (Bộ chọn phần tử)

Bộ chọn này sử dụng tên của thẻ HTML để xác định các phần tử. Nếu bạn muốn áp dụng kiểu cho tất cả các đoạn văn bản, bạn sẽ sử dụng bộ chọn `p`.

Ví dụ:

p { text-align: center; color: red; }

Trong ví dụ trên, tất cả các thẻ <p> trên trang sẽ được căn giữa và có màu chữ đỏ.

2. Class Selector (Bộ chọn lớp)

Bộ chọn lớp sử dụng thuộc tính class của phần tử HTML. Để định kiểu cho các phần tử có cùng một lớp, bạn sử dụng dấu chấm (.) theo sau là tên lớp.

Ví dụ:

.highlight { background-color: yellow; }

Mọi phần tử HTML có thuộc tính class="highlight" sẽ có nền màu vàng. Ưu điểm của bộ chọn lớp là khả năng áp dụng cho nhiều phần tử, ngay cả khi chúng thuộc các loại thẻ khác nhau.

Ví dụ về CSS selector loại lớp
Sử dụng class selector để nhóm các phần tử có chung kiểu dáng

3. ID Selector (Bộ chọn ID)

Bộ chọn ID sử dụng thuộc tính id của phần tử HTML. Mỗi giá trị id trên một trang web phải là duy nhất. Để sử dụng bộ chọn này, bạn dùng dấu thăng (#) theo sau là giá trị ID.

Ví dụ:

#main-header { font-size: 32px; color: blue; }

Chỉ phần tử duy nhất có thuộc tính id="main-header" mới nhận được kiểu này. Bộ chọn ID thường dùng để định kiểu cho một phần tử quan trọng, duy nhất trên trang.

4. Attribute Selector (Bộ chọn thuộc tính)

Đây là nhóm bộ chọn cho phép bạn lựa chọn các phần tử dựa trên sự tồn tại hoặc giá trị của một thuộc tính HTML. CSS selector attribute mang lại khả năng tùy biến cao.

Cú pháp cơ bản:

  • [attribute]: Chọn phần tử có thuộc tính attribute, không quan tâm giá trị.
  • [attribute=value]: Chọn phần tử có thuộc tính attribute với giá trị chính xác là value.
  • [attribute~=value]: Chọn phần tử có thuộc tính attribute chứa giá trị value trong danh sách các giá trị cách nhau bởi khoảng trắng.
  • [attribute|=value]: Chọn phần tử có thuộc tính attribute bắt đầu bằng value theo sau là dấu gạch ngang (-) hoặc có giá trị chính xác là value.
  • [attribute^=value]: Chọn phần tử có thuộc tính attribute bắt đầu bằng chuỗi value.
  • [attribute$=value]: Chọn phần tử có thuộc tính attribute kết thúc bằng chuỗi value.
  • [attribute*=value]: Chọn phần tử có thuộc tính attribute chứa chuỗi value ở bất kỳ đâu.

Ví dụ:

input[type="text"] { border: 1px solid #ccc; }

Đoạn mã này sẽ áp dụng kiểu cho tất cả các thẻ <input> có thuộc tính type"text".

Minh họa CSS selector thuộc tính
Ứng dụng CSS selector attribute để chọn các liên kết có định dạng cụ thể

Các bộ chọn kết hợp (Combinator Selectors)

Các bộ chọn này cho phép bạn xác định các phần tử dựa trên mối quan hệ phân cấp hoặc vị trí tương đối giữa chúng trong cấu trúc DOM.

1. Descendant Selector (Bộ chọn hậu duệ)

Chọn tất cả các phần tử là hậu duệ (con, cháu, chắt...) của một phần tử cụ thể. Sử dụng khoảng trắng giữa các bộ chọn.

div p { color: green; }

Chọn tất cả các thẻ <p> nằm bên trong bất kỳ thẻ <div> nào.

2. Child Selector (Bộ chọn con)

Chọn các phần tử là con trực tiếp của một phần tử khác. Sử dụng ký tự >.

ul > li { list-style-type: square; }

Chọn tất cả các thẻ <li> là con trực tiếp của thẻ <ul>.

3. Adjacent Sibling Selector (Bộ chọn anh em liền kề)

Chọn phần tử đứng ngay sau một phần tử khác, và cả hai phải có cùng cha. Sử dụng dấu cộng (+).

h2 + p { margin-top: 0; }

Chọn thẻ <p> đứng ngay sau một thẻ <h2>.

4. General Sibling Selector (Bộ chọn anh em nói chung)

Chọn tất cả các phần tử đứng sau một phần tử khác, và cả hai phải có cùng cha. Sử dụng dấu ngã (~).

h2 ~ p { font-style: italic; }

Chọn tất cả các thẻ <p> đứng sau một thẻ <h2> (không nhất thiết phải liền kề).

Pseudo-classes và Pseudo-elements

Đây là những công cụ mạnh mẽ cho phép bạn chọn các phần tử dựa trên trạng thái hoặc định vị một phần tử mà không cần thêm thuộc tính vào HTML.

Pseudo-classes

Chọn các phần tử dựa trên trạng thái đặc biệt của chúng.

  • :hover: Khi người dùng di chuột qua phần tử.
  • :focus: Khi phần tử nhận được sự tập trung (ví dụ: ô nhập liệu).
  • :nth-child(n): Chọn phần tử thứ n trong số các anh em của nó.
  • :first-child, :last-child: Chọn phần tử đầu tiên hoặc cuối cùng trong số các anh em.
  • :target: Chọn phần tử mà URL hiện tại trỏ tới thông qua fragment identifier.

Ví dụ:

a:hover { text-decoration: underline; }

Pseudo-elements

Cho phép định kiểu một phần của phần tử.

  • ::before: Chèn nội dung trước phần tử.
  • ::after: Chèn nội dung sau phần tử.
  • ::first-line: Định kiểu cho dòng đầu tiên của một khối văn bản.
  • ::selection: Định kiểu cho phần văn bản mà người dùng chọn.

Ví dụ:

p::first-letter { font-size: 2em; float: left; margin-right: 0.1em; }

Đoạn mã này sẽ làm cho chữ cái đầu tiên của mỗi đoạn văn bản có kích thước lớn hơn và nổi bật.

Minh họa cách CSS selector hoạt động
CSS selector giúp liên kết cấu trúc HTML với phong cách CSS

Ứng dụng thực tế và Lời khuyên

Việc nắm vững các loại css selector không chỉ giúp bạn viết code CSS hiệu quả hơn mà còn là nền tảng để tối ưu hóa SEO cho website. Khi công cụ tìm kiếm quét trang web của bạn, chúng sử dụng các selector để hiểu cấu trúc và ý nghĩa của nội dung.

Tối ưu SEO với CSS Selector

Một cấu trúc HTML sạch sẽ, logic cùng với việc sử dụng selector phù hợp sẽ giúp công cụ tìm kiếm dễ dàng lập chỉ mục nội dung của bạn. Ví dụ, việc sử dụng các thẻ heading (h2, h3) một cách có hệ thống và định kiểu chúng bằng selector tương ứng sẽ giúp Google hiểu rõ bố cục và tầm quan trọng của từng phần. Bộ chọn thuộc tính (css selector attribute) cũng có thể hữu ích trong việc nhắm mục tiêu các phần tử cụ thể cho các mục đích SEO.

Lựa chọn bộ chọn phù hợp

Khi lựa chọn bộ chọn, hãy ưu tiên sự rõ ràng và duy nhất.

Loại bộ chọn Ưu điểm Nhược điểm Khi nào nên dùng
Element Selector Đơn giản, áp dụng cho tất cả Không phân biệt, có thể ảnh hưởng không mong muốn Định kiểu mặc định cho tất cả các thẻ cùng loại.
Class Selector Linh hoạt, tái sử dụng cao Cần thêm thuộc tính class vào HTML Áp dụng kiểu cho nhiều phần tử, nhóm các phần tử có chung đặc điểm.
ID Selector Nhắm mục tiêu chính xác, độ ưu tiên cao Chỉ dùng cho 1 phần tử duy nhất Định kiểu cho các phần tử độc nhất, quan trọng trên trang.
Attribute Selector Chọn lọc dựa trên thuộc tính, không cần sửa HTML Cú pháp phức tạp hơn Chọn các phần tử có thuộc tính hoặc giá trị thuộc tính cụ thể, ví dụ như các liên kết có định dạng target="_blank".
Combinators, Pseudo-classes, Pseudo-elements Khả năng lựa chọn mạnh mẽ, tinh vi Đòi hỏi hiểu biết sâu về cấu trúc DOM và CSS Các trường hợp định kiểu phức tạp, dựa trên ngữ cảnh hoặc trạng thái.

Sử dụng CSS Selector Reference

Để tham khảo chi tiết về cú pháp và các tùy chọn, bạn nên thường xuyên truy cập các nguồn tài liệu đáng tin cậy như css selector reference trên MDN Web Docs hoặc W3Schools. Các trang này cung cấp thông tin cập nhật và ví dụ minh họa phong phú.

Bằng việc kết hợp các loại selector khác nhau, bạn có thể tạo ra các quy tắc CSS vừa mạnh mẽ, vừa dễ quản lý, góp phần xây dựng nên những website hiện đại và tối ưu. Hãy luyện tập thường xuyên để làm chủ công cụ CSS selector!

Trịnh Thị Ngọc
Trịnh Thị Ngọc

Lập trình viên full-stack với 9 năm kinh nghiệm. Thành thạo JavaScript, Python và frameworks hiện đại.

Xem tất cả bài viết

Bình luận