CSS Selectors
CSS selectors define the elements to which a set of CSS rules apply.
Basic selectors
- Type selector
- Selects all elements that match the given node name.
Syntax: eltname
Example: input
will match any <input>
element. - Class selector
- Selects all elements that have the given
class
attribute.
Syntax: .classname
Example: .index
will match any element that has a class of "index". - ID selector
- Selects an element based on the value of its
id
attribute. There should be only one element with a given ID in a document.
Syntax: #idname
Example: #toc
will match the element that has the ID "toc". - Universal selector
- Selects all elements. Optionally, it may be restricted to a specific namespace or to all namespaces.
Syntax: *
ns|*
*|*
Example: *
will match all the elements of the document. - Attribute selector
- Selects elements based on the value of the given attribute.
Syntax: [attr]
[attr=value]
[attr~=value]
[attr|=value]
[attr^=value]
[attr$=value]
[attr*=value]
Example: [autoplay]
will match all elements that have the autoplay
attribute set (to any value).
Combinators
- Adjacent sibling combinator
- The
+
combinator selects adjacent siblings. This means that the second element directly follows the first, and both share the same parent.
Syntax: A + B
Example: h2 + p
will match all <p>
elements that directly follow an <h2>
. - General sibling combinator
- The
~
combinator selects siblings. This means that the second element follows the first (though not necessarily immediately), and both share the same parent.
Syntax: A ~ B
Example: p ~ span
will match all <span>
elements that follow a <p>
. - Child combinator
- The
>
combinator selects nodes that are direct children of the first element.
Syntax: A > B
Example: ul > li
will match all <li>
elements that are nested directly inside a <ul>
element. - Descendant combinator
- The combinator selects nodes that are descendants of the first element.
Syntax: A B
Example: div span
will match all <span>
elements that are inside a <div>
element.
Pseudo-classes
-
Pseudo-classes allow the selection of elements based on state information that is not contained in the document tree.
-
Example:
a:visited
will match all <a>
elements that have been visited by the user.
Pseudo-elements
-
Pseudo-elements represent entities that are not included in HTML.
-
Example:
p::first-line
will match the first line of all <p>
elements.
Specifications
Browser compatibility
Feature | Chrome | Firefox (Gecko) | Internet Explorer | Opera | Safari |
Basic support | 1 | 1.0 (1.7 or earlier) | 3.0 | 3.5 | 1.0 |
Feature | Android | Firefox Mobile (Gecko) | IE Mobile | Opera Mobile | Safari Mobile |
Basic support | 1.5 | 1.0 (1.9.2) | ? | ? | 3.2 |