Pseudo-classes

Pseudo-class trong CSS là một từ khóa được thêm vào bộ chọn, cho phép bạn chọn các phần tử dựa trên thông tin nằm ngoài cây tài liệu, chẳng hạn như trạng thái cụ thể của các phần tử được chọn. Ví dụ, pseudo-class :hover có thể được dùng để tạo kiểu cho một nút khi con trỏ của người dùng di chuột qua nó.

css
/* Any button over which the user's pointer is hovering */
button:hover {
  color: blue;
}

Một pseudo-class bao gồm dấu hai chấm (:) theo sau là tên pseudo-class (ví dụ: :hover). Pseudo-class hàm cũng chứa một cặp dấu ngoặc đơn để xác định các đối số (ví dụ: :dir()). Phần tử mà một pseudo-class được gắn vào được định nghĩa là phần tử neo (ví dụ: button trong trường hợp button:hover).

Pseudo-class cho phép bạn áp dụng kiểu cho một phần tử không chỉ liên quan đến nội dung của cây tài liệu, mà còn liên quan đến các yếu tố bên ngoài như lịch sử duyệt web (:visited, chẳng hạn), trạng thái nội dung của nó (như :checked trên một số phần tử biểu mẫu), hoặc vị trí của chuột (như :hover, cho phép biết liệu chuột có đang ở trên phần tử hay không).

Note: Khác với pseudo-class, pseudo-element có thể được dùng để tạo kiểu cho một phần cụ thể của phần tử.

Pseudo-class nhận dạng phần tử

Các pseudo-class này liên quan đến danh tính cốt lõi của các phần tử.

:defined

Khớp với bất kỳ phần tử nào đã được định nghĩa.

:heading

Khớp với bất kỳ phần tử tiêu đề nào (<h1>-<h6>).

Pseudo-class trạng thái hiển thị phần tử

Các pseudo-class này cho phép chọn phần tử dựa trên trạng thái hiển thị của chúng.

:open

Khớp với phần tử có thể mở hoặc đóng, hiện đang ở trạng thái mở.

:popover-open

Khớp với phần tử popover hiện đang trong trạng thái hiển thị.

Khớp với phần tử đang ở trạng thái loại trừ mọi tương tác với các phần tử bên ngoài nó cho đến khi tương tác đó bị đóng.

:fullscreen

Khớp với phần tử hiện đang ở chế độ toàn màn hình.

:picture-in-picture

Khớp với phần tử hiện đang ở chế độ picture-in-picture.

Pseudo-class đầu vào

Các pseudo-class này liên quan đến các phần tử biểu mẫu và cho phép chọn phần tử dựa trên thuộc tính HTML và trạng thái của trường trước và sau khi tương tác.

:enabled

Đại diện cho phần tử giao diện người dùng đang ở trạng thái bật.

:disabled

Đại diện cho phần tử giao diện người dùng đang ở trạng thái tắt.

:read-only

Đại diện cho bất kỳ phần tử nào không thể được người dùng thay đổi.

:read-write

Đại diện cho bất kỳ phần tử nào có thể chỉnh sửa bởi người dùng.

:placeholder-shown

Khớp với phần tử input đang hiển thị văn bản placeholder. Ví dụ: nó sẽ khớp với thuộc tính placeholder trong các phần tử <input><textarea>.

:autofill

Khớp khi một <input> đã được trình duyệt tự động điền.

:default

Khớp với một hoặc nhiều phần tử UI là mặc định trong một tập hợp các phần tử.

:checked

Khớp khi các phần tử như checkbox và radio button được bật.

:indeterminate

Khớp với các phần tử UI khi chúng đang ở trạng thái không xác định.

:blank

Khớp với phần tử nhập liệu của người dùng trống, chứa chuỗi rỗng hoặc đầu vào null khác.

:valid

Khớp với phần tử có nội dung hợp lệ. Ví dụ: phần tử input có kiểu 'email' chứa địa chỉ email được định dạng hợp lệ hoặc giá trị rỗng nếu điều khiển không bắt buộc.

:invalid

Khớp với phần tử có nội dung không hợp lệ. Ví dụ: phần tử input có kiểu 'email' với tên được nhập.

:in-range

Áp dụng cho các phần tử có giới hạn phạm vi. Ví dụ: thanh trượt khi giá trị được chọn nằm trong phạm vi cho phép.

:out-of-range

Áp dụng cho các phần tử có giới hạn phạm vi. Ví dụ: thanh trượt khi giá trị được chọn nằm ngoài phạm vi cho phép.

:required

Khớp khi phần tử biểu mẫu là bắt buộc.

:optional

Khớp khi phần tử biểu mẫu là tùy chọn.

:user-valid

Đại diện cho phần tử có đầu vào đúng, nhưng chỉ khi người dùng đã tương tác với nó.

:user-invalid

Đại diện cho phần tử có đầu vào không đúng, nhưng chỉ khi người dùng đã tương tác với nó.

Pseudo-class ngôn ngữ

Các pseudo-class này phản ánh ngôn ngữ tài liệu và cho phép chọn phần tử dựa trên ngôn ngữ hoặc hướng viết.

:dir()

Pseudo-class hướng chọn phần tử dựa trên hướng của nó được xác định bởi ngôn ngữ tài liệu.

:lang()

Chọn phần tử dựa trên ngôn ngữ nội dung của nó.

Pseudo-class vị trí

Các pseudo-class này liên quan đến các liên kết và các phần tử được nhắm đến trong tài liệu hiện tại.

Khớp với phần tử nếu phần tử đó sẽ khớp với :link hoặc :visited.

Khớp với các liên kết chưa được truy cập.

:visited

Khớp với các liên kết đã được truy cập.

Khớp với các liên kết có URL tuyệt đối giống với URL đích. Ví dụ: liên kết neo đến cùng một trang.

:target

Khớp với phần tử là mục tiêu của URL tài liệu.

:scope

Đại diện cho các phần tử là điểm tham chiếu để các bộ chọn khớp.

Note: Một pseudo-class :target-within, để khớp với các phần tử là hoặc có phần tử con là mục tiêu của URL tài liệu, đã được định nghĩa nhưng bị xóa khỏi thông số kỹ thuật. Hãy dùng :has(:target) cho mục đích này.

Pseudo-class trạng thái tài nguyên

Các pseudo-class này áp dụng cho phương tiện có khả năng ở trạng thái được mô tả là đang phát, chẳng hạn như video.

:playing

Đại diện cho phần tử có thể phát đang phát.

:paused

Đại diện cho phần tử có thể phát đang tạm dừng.

:seeking

Đại diện cho phần tử có thể phát đang tìm kiếm vị trí phát trong tài nguyên phương tiện.

:buffering

Đại diện cho phần tử có thể phát đang phát nhưng tạm thời bị gián đoạn vì đang tải xuống tài nguyên phương tiện.

:stalled

Đại diện cho phần tử có thể phát đang phát nhưng bị gián đoạn vì không thể tải xuống tài nguyên phương tiện.

:muted

Đại diện cho phần tử tạo âm thanh đang bị tắt tiếng.

:volume-locked

Đại diện cho phần tử tạo âm thanh có mức âm lượng bị khóa bởi trình duyệt.

Pseudo-class chiều thời gian

Các pseudo-class này áp dụng khi xem nội dung có thời gian, chẳng hạn như track phụ đề WebVTT.

:current

Đại diện cho phần tử hoặc tổ tiên của phần tử đang được hiển thị.

:past

Đại diện cho phần tử xuất hiện hoàn toàn trước phần tử :current.

:future

Đại diện cho phần tử xuất hiện hoàn toàn sau phần tử :current.

Pseudo-class cấu trúc cây

Các pseudo-class này liên quan đến vị trí của phần tử trong cây tài liệu.

:root

Đại diện cho phần tử là gốc của tài liệu. Trong HTML, thường là phần tử <html>.

:empty

Đại diện cho phần tử không có con nào ngoài các ký tự khoảng trắng.

:nth-child()

Sử dụng ký hiệu An+B để chọn phần tử từ danh sách các phần tử anh em.

:nth-last-child()

Sử dụng ký hiệu An+B để chọn phần tử từ danh sách các phần tử anh em, đếm ngược từ cuối danh sách.

:first-child

Khớp với phần tử là phần tử anh em đầu tiên.

:last-child

Khớp với phần tử là phần tử anh em cuối cùng.

:only-child

Khớp với phần tử không có anh em. Ví dụ: mục danh sách không có mục danh sách nào khác trong danh sách đó.

:heading()

Sử dụng ký hiệu An+B để chọn các phần tử tiêu đề (<h1>-<h6>).

:nth-of-type()

Sử dụng ký hiệu An+B để chọn phần tử từ danh sách các phần tử anh em khớp với một kiểu nhất định từ danh sách phần tử anh em.

:nth-last-of-type()

Sử dụng ký hiệu An+B để chọn phần tử từ danh sách các phần tử anh em khớp với một kiểu nhất định từ danh sách phần tử anh em, đếm ngược từ cuối danh sách.

:first-of-type

Khớp với phần tử là phần tử anh em đầu tiên và cũng khớp với bộ chọn kiểu nhất định.

:last-of-type

Khớp với phần tử là phần tử anh em cuối cùng và cũng khớp với bộ chọn kiểu nhất định.

:only-of-type

Khớp với phần tử không có anh em của kiểu bộ chọn được chọn.

Pseudo-class cấu trúc shadow

Các pseudo-class này liên quan đến shadow DOM.

:host

Khớp với shadow host của cây shadow.

:host()

Khớp với phần tử khớp với :host và khớp với bất kỳ bộ chọn nào trong danh sách được cung cấp.

:host-context()

Chọn các phần tử bên ngoài cây shadow trong ngữ cảnh của shadow host.

:has-slotted

Khớp với các phần tử slot đã được gán nội dung.

Pseudo-class hành động người dùng

Các pseudo-class này yêu cầu một số tương tác từ người dùng để áp dụng, chẳng hạn như giữ con trỏ chuột qua phần tử.

:hover

Khớp khi người dùng chỉ định một mục bằng thiết bị trỏ, chẳng hạn như giữ con trỏ chuột qua mục.

:active

Khớp khi một mục đang được kích hoạt bởi người dùng. Ví dụ: khi mục được nhấp vào.

:focus

Khớp khi phần tử có focus.

:focus-visible

Khớp khi phần tử có focus và tác nhân người dùng xác định rằng phần tử nên được focus một cách rõ ràng.

:focus-within

Khớp với phần tử mà :focus áp dụng, cộng với bất kỳ phần tử nào có phần tử con mà :focus áp dụng.

:target-current

Khớp với pseudo-element ::scroll-marker của một scroll-marker-group hiện đang được cuộn đến, nói cách khác là scroll marker đang hoạt động.

Pseudo-class hàm

Các pseudo-class này nhận danh sách bộ chọn hoặc danh sách bộ chọn tha thứ làm tham số.

:is()

Pseudo-class khớp-bất-kỳ khớp với bất kỳ phần tử nào khớp với bất kỳ bộ chọn nào trong danh sách được cung cấp. Danh sách là tha thứ.

:not()

Pseudo-class phủ định, hoặc khớp-không-có-gì, đại diện cho bất kỳ phần tử nào không được đại diện bởi đối số của nó.

:where()

Pseudo-class điều chỉnh specificity khớp với bất kỳ phần tử nào khớp với bất kỳ bộ chọn nào trong danh sách được cung cấp mà không thêm bất kỳ trọng số specificity nào. Danh sách là tha thứ.

:has()

Pseudo-class quan hệ đại diện cho phần tử nếu bất kỳ bộ chọn tương đối nào khớp khi được neo vào phần tử đính kèm.

Pseudo-class trạng thái tùy chỉnh

Các pseudo-class này áp dụng cho các phần tử tùy chỉnh.

:state()

Khớp với các phần tử tùy chỉnh có trạng thái tùy chỉnh được chỉ định.

Pseudo-class trang

Các pseudo-class này liên quan đến các trang trong tài liệu in và được sử dụng với at-rule @page.

:left

Đại diện cho tất cả các trang bên trái của tài liệu in.

Đại diện cho tất cả các trang bên phải của tài liệu in.

:first

Đại diện cho trang đầu tiên của tài liệu in.

:blank

Đại diện cho trang trống trong tài liệu in.

Pseudo-class chuyển tiếp view

Các pseudo-class này liên quan đến các phần tử tham gia vào chuyển tiếp view.

:active-view-transition

Khớp với phần tử gốc của tài liệu khi chuyển tiếp view đang diễn ra (đang hoạt động) và ngừng khớp khi quá trình chuyển tiếp hoàn thành.

:active-view-transition-type()

Khớp với phần tử gốc của tài liệu khi chuyển tiếp view được chỉ định đang diễn ra (đang hoạt động) và ngừng khớp khi quá trình chuyển tiếp hoàn thành.

Cú pháp

css
selector:pseudo-class {
  property: value;
}

Giống như các lớp thông thường, bạn có thể kết hợp nhiều pseudo-class tùy thích trong một bộ chọn.

Chỉ mục theo bảng chữ cái

Pseudo-class được định nghĩa bởi một tập hợp các thông số kỹ thuật CSS bao gồm các mục sau:

A

B

C

D

E

F

H

I

L

M

N

O

P

R

S

T

U

V

W

Pseudo-class không chuẩn

Các pseudo-class không chuẩn có tiền tố vendor bao gồm:

Tiền tố -moz-

Thông số kỹ thuật

Thông số kỹ thuật
HTML
# pseudo-classes
Selectors Level 4
CSS Scope
CSS Paged Media Module Level 3

Xem thêm