+2

CSS Selector

Trong bài viết này, chúng ta sẽ tìm hiểu về một khái niệm không hề mới nhưng không phải ai cũng có thể nắm rõ và sử dụng linh hoạt, CSS Selector.

CSS Selector là gì, nó được chia ra làm những loại như thế nào ?

CSS Selector là gì

Một css selector dùng để select một hoặc nhiều element mà chúng ta muốn css

Đối với những người chưa có kinh nghiệm hay chưa nắm rõ về CSS Selector thường sử dụng tên thẻ, id hoặc class để select các elements. Điều này dẫn đến những đoạn code css rất dài, rối rắm và khó kiểm soát. Sử dụng css selector linh hoạt giúp chúng ta viết css dễ dàng, ngắn ngọn và clean code hơn.

Các loại CSS Selector

Chúng ta có thể chia CSS Selector thành 5 loại:

  • Simple selectors
  • Combinator selectors
  • Pseudo-class selectors
  • Pseudo-elements selectors
  • Attribute selectors

1. Simple Selectors

Simple Selectors: select các elements dựa trên element name, id, class.

  • selector dựa vào element name:

    p { color: red }

  • selector dựa vào id, class:

#para1, .center {
  text-align: center;
  • Bạn cũng có thể select một element cụ thể với một class name:

p.center { text-align: center; }

  • Universal selector: select tất cả element trong page:
* {
  text-align: center;
}

2. Combinator selectors

Select elements dựa trên mối quan hệ giữa các element

Selector
Example
Description
element element div p Selects tất cả thẻ p bên trong thẻ div
element > element div > p Selects tất cả thẻ p là con trực tiếp của thẻ div
element + element div + p Selects 1 thẻ p đứng sau liền kề thẻ div
element ~ element div ~ p Selects tất cả thẻ p đứng sau thẻ div

3. Pseudo-class selectors

Select elements dựa trên một trạng thái của element

Css cung cấp cho chúng ta rất nhiều pseudo-class selector. Dưới đây mình sẽ chỉ giới thiệu tới mọi người một số pseudo-class selector hay dùng.

Selector Example Description
:active a:active Selects các thẻ a có trạng thái active
:checked input:checked Selects tất cả thẻ input có trạng thái checked
:disable input:disabled Selects các thẻ input có trạng thái disable
:empty p:empty Selects các thẻ p không có children
:enable input:enable Selects các thẻ input có trạng thái enable
:first-child p:first-child Selects các thẻ p là first child của parent chính nó
:fist-of-type p:first-of-type Selects các thẻ p là first child của một type cụ thể, của parent chính nó
:focus a:focus Selects các thẻ a đang được focus
:hover a:hover Selects các thẻ a đang được hover
:last-child p:last-child Selects các thẻ p là last child của parent chính nó
:last-of-type p:last-of-type Selects các thẻ p là last child của một type cụ thể, của parent chính nó
:not :not(p) Selects các element không phải thẻ p
:nth-child(n) p:nth-child(2) Selects các thẻ p là con thứ 2 của parent chính nó
:nth-last-child(n) p:nth-last-child(2) Selects các thẻ p là con cuối cùng thứ 2 của parent chính nó, tính từ last child cuối cùng
:only-child p:only-child Selects các thẻ p chỉ là con của parent chính nó
:root root Selects document'root element
:target a:target Selects các thẻ a đã được click vào URL
:visted a:visted Selects các thẻ a đã được visted

Mọi người có thể tham khảo các pseudo-class selector khác tại đây: https://www.w3schools.com/css/css_pseudo_classes.asp

4.Pseudo-elements selectors

Selects and style một phần của một element

Selector Example Description
::after p:after Chèn content vào sau các thẻ p
::before p:before Chèn content vào trước các thẻ p
::first-letter p:first-letter Selects kí tự đầu tiên của các thẻ p
::first-line p:first-line Selects dòng đầu tiên của các thẻ p
::selection ::selection Selects các phần mà user chọn (bôi đen)

5.Attribute selectors

Selects elements dựa trên một attribute name hoặc attribute value

Selector Example Description
[attribute] [target] Selects tất cả các element có một attribute target
[attribute=value] [target=_blank] Selects tất cả các element có một attribute target="_blank"
[attribute~=value] [title~=flower] Selects tất cả các element có một attribute title chứ từ "flower"
[attribute =value] [title
[attribute^=value] a[href^="https"] Selects tất cả các element a có một attribute href bắt đầu bằng "https"
[attribute$=value] a[href$=".com"] Selects tất cả các element a có một attribute href kết thúc bằng ".com"
[attribute*=value] p[title="test"] Selects tất cả các element p có một attribute title có chứa từ "test" không phải là first word

All rights reserved

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí