Pattern | Meaning | Specificity and examples |
Universal Selector The universal selector has no weight in terms of specificity. | 0-0-0 | |
| Matches any element. |
|
Type selector Type or element selectors have the lowest specificity. | 0-0-1 | |
| Matches elements of type
|
|
Class selectors | 0-1-0 | |
| Matches all elements whose
class list contains the class |
|
ID selectors | 1-0-0 | |
| Matches the element that
has an ID equal to |
|
Combinators Combinators,
including | 0-0-0 | |
| Matches elements |
|
| Matches elements |
|
| Matches the element
|
|
| Matches all elements
|
|
Attribute selectors Attribute selectors have the same specificity as the class selector. | 0-1-0 | |
| Matches elements |
|
| Matches elements |
|
| Matches elements |
|
| Matches elements |
|
| Matches elements |
|
| Matches elements |
|
| Matches elements |
|
Structural pseudoclasses Pseudoclasses have the same specificity as a class selector. | 0-1-0 | |
| Matches element |
|
| Matches element |
|
| Matches element |
|
| Matches element |
|
| Matches element |
|
| Matches element |
|
| Matches element(s) |
|
| Matches element(s) |
|
| Matches element(s) |
|
| Matches element(s) | |
| Matches element |
|
| Matches element |
|
Link, user-action, and UI element state pseudoclasses These pseudoclasses triggered by state have the same specificity as a class selector. | 0-1-0 | |
| The |
|
| The user action
pseudoclasses match element(s) |
|
| Matches user interface
element |
|
| Matches a user interface
element |
|
| Matches element |
|
| Matches element |
|
| Matching element |
|
| Matches form field element
|
|
| Matches element |
|
Target and Language | ||
| An |
|
| An element of type |
|
Negation | ?-?-? (depends on parameter) | |
| Matches all the |
|
Pseudoelements | 0-0-1 | |
| Matches the first formatted
line of element |
|
| Matches the first formatted
letter of element |
|
| Generates content before
the content of element |
|
| Generates content after the
content in element |
|
| Not currently in the
specifications, it matches the content of element |
|
* | ::after | :empty |
E | ::first-letter | :not() |
.class | ::first-line | :target |
#id | E[attribute^=value] | :enabled |
E F | E[attribute$=value] | :disabled |
E > F | E[attribute*=value] | :checked |
E + F | E ~ F | :indeterminate [a] |
E[attribute] | :root | :default |
E[attribute=value] | :last-child | :valid |
E[attribute~=value] | :only-child | :invalid |
E[attribute|=value] | :nth-child() | :in-range |
:first-child | :nth-last-child() | :out-of-range |
:link [b] | :first-of-type | :required |
:visited | :last-of-type | :optional |
:lang() | :only-of-type | :read-only |
::before [c] | :nth-of-type() | :read-write |
::selection [d] | :nth-last-of-type() | |
[a] The last nine selectors are part of CSS Basic User Interface Module Level 3 (CSS3 UI) specification, and are found in the CSS Selectors Level 4 specification. [b] Some browsers have limited support for [c] Use single colon notation for support in older IE. [d] Not in the CSS Selectors level 3 specification, but
fully supported. Prefix with |
Selector | Definition | Level |
Basic Selectors | ||
| Universal selector matches all elements. | 2 |
| Type (tag name) selector
matches elements of type | 1 |
| Class selectors match
elements having the class listed,
| 1 |
| ID Selector matches the
element with ID equal to | 1 |
Combinators | ||
| Descendant combinator,
matches element | 1 |
| Child combinator, matches
element | 2 |
| Next sibling combinator,
matches element | 2 |
| Following sibling
combinator, matches elements | 3 |
| Reference combinator,
matches element | 4 |
| Determining the subject of
a selector +Child combinator, matching element | 4 |
Attribute selectors | ||
| Matches element | 2 |
| Matches element | 2 |
| Matches element | 4 |
| Matches element | 2 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 2 |
Structural pseudoclasses | ||
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 4 |
| Matches element | 2 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 3 |
| Matches element | 4 |
| Matches element | 4 |
Grid-Structural pseudoclasses | ||
| Matches element | 4 |
| Matches element | 4 |
| Matches element | 4 |
Link pseudoclass | ||
| Matches element | 4 |
| Matches element | 1 |
| Matches element | 1 |
| Matches element | 4 |
| Matches element | 4 |
| The | 3 |
User interface pseudoclasses | ||
| Matches element | 1 |
| Matches element | 2 |
| Matches element | 2 |
| Matches user interface
element | 3 |
| Matches user interface
element | 3 |
| Matches user interface
element | 3/4[a] |
| Matches user interface
element | 3/4 |
| Matches an input-control
element | 3/4 |
| Matches the user interface
element | 3/4 |
| Matches the user interface
element | 3 |
| Matches the user interface
element | 4 |
| Matches a user-input
element | 3/4 |
| Matches a user-input
element | 3/4 |
| Matches a user-input
element | 3/4 |
| Matches a user-input
element | 3/4 |
| Matches a user-input
element | 3/4 |
| Matches a user-input
element | 3/4 |
Drag-and-drop pseudoclasses | ||
| Matches element | |
| Matches element | |
| Matches element | |
Matching, negation, and scope pseudoclasses | ||
| Matches elements | 3/4 |
| Matches elements | 4 |
| The | 4 |
Language and direction pseudoclasses | ||
| Matches elements | 4 |
| Matches elements | 2/4 |
Time-dimensional pseudoclasses | ||
E:current | Matches element | 4 |
E:current(s) | Matches element | 4 |
E:past | Matches element | 4 |
E:future | Matches element | 4 |
[a] Added as part of CSS Basic User Interface Module Level 3 (CSS3 UI) specification, introduced into the CSS Selectors specification with Level 4. |