CSS Selectors.
{CSS selectors define the elements to which a set of CSS rules apply.}
Table of contents
Basic Selectors
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.
/* Selects all elements */
* {
color: green;
}
Selects all elements that have the given node name.
Syntax:elementname
Example: input
will match any <input>
element.
/* All <a> elements. */
a {
color: red;
}
Selects all elements that have the given class
attribute.
Syntax: .classname
Example: .index
will match any element that has a class of "index".
/* All elements with class="spacious" */
.spacious {
margin: 2em;
}
/* All <li> elements with class="spacious" */
li.spacious {
margin: 2em;
}
/* All <li> elements with a class list that includes both "spacious" and "elegant" */
/* For example, class="elegant retro spacious" */
li.spacious.elegant {
margin: 2em;
}
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".
/* The element with id="demo" */
#demo {
border: red 2px solid;
}
Selects all elements that have 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).
/* <a> elements with a title attribute */
a[title] {
color: purple;
}
/* <a> elements with an href matching "https://example.org" */
a[href="https://example.org"] {
color: green;
}
/* <a> elements with an href containing "example" */
a[href*="example"] {
font-size: 2em;
}
/* <a> elements with an href ending ".org" */
a[href$=".org"] {
font-style: italic;
}
/* <a> elements whose class attribute contains the word "logo" */
a[class~="logo"] {
padding: 2px;
}
Grouping selectors
The ,
selector is a grouping method that selects all the matching nodes.
Syntax: A, B
Example: div, span
will match both <span>
and <div>
elements.
/* Selects all matching elements */
span,
div {
border: red 2px solid;
}
Combinators
The " " (space) 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.
/* List items that are descendants of the "my-things" list */
ul.my-things li {
margin: 2em;
}
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.
/* List items that are children of the "my-things" list */
ul.my-things > li {
margin: 2em;
}
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>
, immediately or not.
/* Paragraphs that are siblings of and
subsequent to any image */
img ~ p {
color: red;
}
The +
combinator matches the second element only if it immediately follows the first element.
Syntax: A + B
Example: h2 + p
will match the first <p>
element that immediately follow an <h2>
element.
/* Paragraphs that come immediately after any image */
img + p {
font-weight: bold;
}
The ||
combinator selects nodes which belong to a column.
Syntax: A || B
Example: col || td
will match all <td>
elements that belong to the scope of the <col>
.
/* Table cells that belong to the "selected" column */
col.selected || td {
background: gray;
}
Pseudo
The :
pseudo 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.
/* Any button over which the user's pointer is hovering */
button:hover {
color: blue;
}
The ::
pseudo represent entities that are not included in HTML.
Example: p::first-line
will match the first line of all <p>
elements.
/* The first line of every <p> element. */
p::first-line {
color: blue;
text-transform: uppercase;
}