Các bộ Selector trong CSS
Bộ chọn (Selector) được sử dụng để xác định các phần tử HTML được tác động bởi giá trị của thuộc tính CSS đó.
Bộ chọn (Selector) được chia thành 5 loại:
Bộ chọn đơn giản (chọn các phần tử dựa trên tên thẻ (tag), id, class)
Bộ chọn bộ kết hợp (chọn các phần tử dựa trên mối quan hệ cụ thể giữa chúng)
Bộ chọn lớp giả (chọn phần tử dựa trên một trạng thái nhất định)
Bộ chọn phần tử giả (chọn và tạo kiểu cho một phần của phần tử)
Bộ chọn thuộc tính (chọn các phần tử dựa trên một thuộc tính hoặc giá trị thuộc tính)
1. Bộ chọn đơn giản (Simple selectors)
Selector ID
Sử dụng thuộc tính id
của phần tử HTML để làm bộ chọn chọn một phần tử cụ thể. Id
của phần tử duy nhất trong một trang. Nó giúp bạn chọn được một phần tử duy nhất muốn tác động tới.
Cú pháp:
Với id, bạn phải bắt đầu bằng dấu #
Ví dụ: Quy tắc CSS dưới đây sẽ được áp dụng cho phần tử HTML có id="thu_do"
Selector ClassName
Sử dụng thuộc tính class của phần tử HTML để làm bộ chọn chọn tập hợp các phần tử có cùng class đó. Hiểu đơn giản hơn, nếu khi bạn muốn tác động css lên nhiều phần tử khác nhau, thay vì đặt id
bạn hoàn toàn có thể đặt class
.
Để chọn các phần tử với một class cụ thể, bắt đầu bằng kí tự dấu chấm (.) và theo sau là tên của class.
Cú pháp:
Ví dụ: Tất cả phần tử HTML có class .mien_bac
sẽ nhận màu đỏ, class .mien_nam
sẽ nhận màu xanh
Selector TagName
Sử dụng tên của thẻ HTML để làm bộ chọn chọn ra các phần tử có cùng tên thẻ trong trang HTML sẽ bị tác động bởi CSS này.
Cú pháp:
Ví dụ:
Selector All
Bộ chọn này cho phép tác động lên tất cả các phần tử của trang HTML.
Cú pháp:
Ví dụ: Tất cả thành phần đều bị tác động bởi CSS khi sử dụng *
2. Bộ chọn kết hợp (Combinators selector)
Trong bộ chọn này sử dụng mối quan hệ giữa các phần tử để lấy được phần tử cần tác động. Bộ chọn này chia làm 4 loại như sau:
bộ chọn con cháu (dấu cách)
bộ chọn con trực tiếp (>)
bộ chọn anh em liền kề (+)
bộ chọn anh chị em chung (~)
Bộ chọn con cháu (space)
Loại bộ chọn này cho phép bạn chỉ định các phần tử ảnh hưởng bởi cấp độ cha con. Bộ chọn này sử dụng dấu cách (space) giữa các cấp độ quan hệ.
Cú pháp:
Ví dụ: Tất cả các thẻ p là con của thẻ div sẽ bị tác động bởi css này
Bộ chọn con trực tiếp (>)
Bộ chọn này xác định tất cả các phần tử là con trực tiếp của phần tử được chỉ định. Sử dụng dấu >
để thể hiện mối quan hệ
Cú pháp:
Ví dụ:
Bộ chọn anh em liền kề (+)
Bộ chọn này xác định 1 phần tử nằm ngay sau phần tử đang chỉ định. Sử dụng dấu +
để thể hiện mối quan hệ này.
Cú pháp: Element 2 nằm sau element 1 sẽ bị tác động bởi css
Ví dụ:
Bộ chọn anh chị em chung (~)
Bộ chọn này có phần tác động rộng hơn so với bộ chọn anh em liền kề phía trên, nó xác định tất cả thành phần anh chị em phía sau phần tử chỉ định. Sử dụng dấu ~
để thể hiện mối quan hệ này.
Cú pháp:
Ví dụ: Tất cả phần tử là thẻ p đừng sau thẻ div và ngang hàng với thẻ div đều bị tác động bởi CSS này
3. Bộ chọn lớp giả
Một lớp giả được sử dụng để xác định trạng thái đặc biệt của một phần tử. Nó có thể sử dụng để tác động css lên các phần tử khi có các sự kiện thay đổi trạng thái như người dùng di chuột qua (hover), người dùng tập trung (focus) vào một phần tử,....
Cú pháp chung:
Dưới đây là các ví dụ về thẻ liên kết (a) kết hợp với các lớp giả
a:link: Bộ chọn được sử dụng để chọn các liên kết chưa được truy cập
a:visited: Bộ chọn được sử dụng để chọn các liên kết đã được truy cập
a:hover: Bộ chọn được sử dụng khi di chuột vào liên kết
a:active: Bộ chọn được sử dụng khi liên kết đang được truy cập. Bạn có thể click và giữ để thấy rõ sự thay đổi.
Ví dụ:
Lưu ý: :hover
phải đặt sau :link
và :visited; :active
phải đặt sau :hover
thì mới có tác dụng.
Lớp giả hover với thẻ div
Cú pháp:
:focus
Cú pháp: Bộ chọn xác định khi focus vào đối tượng selector
Ví dụ:
:first-child
Cú pháp: Bộ chọn xác định phần tử đầu tiên trong tập các phần tử được xác định
Ví dụ:
:last-child
Cú pháp: Bộ chọn xác định phần tử cuối cùng trong tập các phần tử được xác định
Ví dụ:
Ngoài ra còn nhiều lớp giả ít khi sử dụng như :read-only, :read-write, :only-child,...Phần này trong quá trình thực hành gặp phải sẽ được hướng dẫn thêm.
4. Bộ chọn phần tử giả
Bộ chọn này sử dụng để tác động css lên một phần cụ thể trong phần tử xác định. Với bộ chọn phần tử giả sẽ bắt đầu bằng 2 dấu hai chấm (::)
Cú pháp chung:
Một số phần tử giả thông dụng
::first-letter: Bộ chọn cho phép chọn ra kí tự đầu tiên trong nội dung phần tử xác định
Ví dụ:
::fist-line: Bộ chọn cho phép chọn ra dòng đầu tiên trong nội dung của phần tử chỉ định
Ví dụ:
::before: Sử dụng để chèn một nội dung vào trước phần tử chỉ định. Tuy nhiên phần tử giả này nằm trong phần tử chỉ định. Đối với phần tử giả này, bạn cần phải đặt thuộc tínhcontent
với giá trị có thể là rỗng, url của hình ảnh hoặc nội dung dạng text. Nếu không có thuộc tính content thì phần tử giả này sẽ không xuất hiện.
Ví dụ:
::after: Ngược lại với ::before, ::after cho phép chèn một nội dung vào sau phần tử chỉ định.
Ví dụ:
Lưu ý:
Không phải phần tử (thẻ) nào cũng có thể sử dụng
::before
,::after
. Một số thẻ không sử dụng được như thẻ ảnh, audio, video,...Luôn luôn phải có thuộc tính content. Nếu muốn xóa phần tử giả này đi, bạn có thể đặt giá trị của thuộc tính
content
lànone
5. Bộ chọn thuộc tính
Bộ chọn thuộc tính được sử dụng để chọn phần tử có thuộc tính được chỉ định
Bộ chọn [attribute=value]: được sử dụng để chọn phần tử có thuộc tính bằng với giá trị chỉ định
Ví dụ: Các thẻ a có thuộc tính target=_blank
sẽ được tác động background-color: yellow
Bộ chọn [attribute~=value]: được sử dụng để chọn phần tử có thuộc tính chứa một từ được chỉ định
Ví dụ: Thuộc tính value của thẻ input chứa từ Hello sẽ biến đổi background thành màu vàng.
Bộ chọn [attribute^=value]: được sử dụng để chọn phần tử có thuộc tính bắt đầu bằng một giá trị được chỉ định
Ví dụ: Thẻ p có class bắt đầu bằng "fita" sẽ được thay đổi màu thành màu đỏ