2020-03-11
|~5 min read
|948 words
Yesterday, I wrote about what the comma means in CSS.
In doing so, I realized that it’s not actually considered a CSS selector.
What the selectors are is another thing I find myself constantly looking up.
I found MDN’s reference table of selectors a concise summary of the different selectors (copied below).
| Selector | Example | Learn CSS tutorial |
| --------------------------- | ----------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----- | ------------------------------------------------------------------- |
| Type selector | h1 { }
| Type selectors |
| Universal selector | * { }
| The universal selector |
| Class selector | .box { }
| Class selectors |
| id selector | #unique { }
| ID selectors |
| Attribute selector | a[title] { }
| Attribute selectors |
| Pseudo-class selectors | p:first-child { }
| Pseudo-classes |
| Pseudo-element selectors | p::first-line { }
| Pseudo-elements |
| Descendant combinator | article p
| Descendant combinator |
| Child combinator | p
| Child combinator |
| Adjacent sibling combinator | h1 + p
| Adjacent sibling |
| General sibling combinator | h1 ~ p
| General sibling |
| Tag and Class Combination | p.class
| Selects all p
elements with a class name of class
|
| Attribute | [target]
| Selects all elements with an attribute of target
|
| [attribute=value]
| [target=_blank]
| Selects all elements with target=“_blank” |
| [attribute~=value]
| [title~=flower]
| Selects all elements with a title attribute containing the wor “flower” |
| [attribute^=value]
| a[href^="https"]
| Selects every <a>
element whose href attribute value begins with “htps” |
| [attribute$=value]
| a[href$=".pdf"]
| Selects every <a>
element whose href attribute value ends with “.pdf” |
| [attribute*=value]
| a[href*="w3schools"]
| Selects every <a>
element whose href attribute value contains the substring “w3schools” |
| [attribute | =value]
| [lang | =en]
| Selects all elements with a lang attribute value starting with “en” |
| :active
| a:active
| Selects the active link |
| ::after
| p::after
| Insert something after the content of each <p>
element |
| ::before
| p::before
| Insert something before the content of each <p>
element |
| :checked
| input:checked
| Selects every checked <input>
element |
| :default
| input:default
| Selects the default <input>
element |
| :disabled
| input:disabled
| Selects every disabled <input>
element |
| :empty
| p:empty
| Selects every <p>
element that has no children (including text nodes) |
| :enabled
| input:enabled
| Selects every enabled <input>
element |
| :first-child
| p:first-child
| Selects every <p>
element that is the first child of its parent |
| ::first-letter
| p::first-letter
| Selects the first letter of every <p>
element |
| ::first-line
| p::first-line
| Selects the first line of every <p>
element |
| :first-of-type
| p:first-of-type
| Selects every <p>
element that is the first <p>
element of its parent |
| :focus
| input:focus
| Selects the input element which has focus |
| :fullscreen
| :fullscreen
| Selects the element that is in full-screen mode |
| :hover
| a:hover
| Selects links on mouse over |
| :in-range
| input:in-range
| Selects input elements with a value within a specified range |
| :indeterminate
| input:indeterminate
| Selects input elements that are in an indeterminate state |
| :invalid
| input:invalid
| Selects all input elements with an invalid value |
| :lang(language)
| p:lang(it)
| Selects every <p>
element with a lang attribute equal to “it” (Italian) |
| :last-child
| p:last-child
| Selects every <p>
element that is the last child of its parent |
| :last-of-type
| p:last-of-type
| Selects every <p>
element that is the last <p>
element of its parent |
| :link
| a:link
| Selects all unvisited links |
| ::marker
| ::marker
| Selects the markers of list items |
| :not(selector)
| :not(p)
| Selects every element that is not a <p>
element |
| :nth-child(n)
| p:nth-child(2)
| Selects every <p>
element that is the second child of its parent |
| :nth-last-child(n)
| p:nth-last-child(2)
| Selects every <p>
element that is the second child of its parent, counting from the last child |
| :nth-last-of-type(n)
| p:nth-last-of-type(2)
| Selects every <p>
element that is the second <p>
element of its parent, counting from the last child |
| :nth-of-type(n)
| p:nth-of-type(2)
| Selects every <p>
element that is the second <p>
element of its parent |
| :only-of-type
| p:only-of-type
| Selects every <p>
element that is the only <p>
element of its parent |
| :only-child
| p:only-child
| Selects every <p>
element that is the only child of its parent |
| :optional
| input:optional
| Selects input elements with no “required” attribute |
| :out-of-range
| input:out-of-range
| Selects input elements with a value outside a specified range |
| ::placeholder
| input::placeholder
| Selects input elements with the “placeholder” attribute specified |
| :read-only
| input:read-only
| Selects input elements with the “readonly” attribute specified |
| :read-write
| input:read-write
| Selects input elements with the “readonly” attribute NOT specified |
| :required
| input:required
| Selects input elements with the “required” attribute specified |
| :root
| :root
| Selects the document’s root element |
| ::selection
| ::selection
| Selects the portion of an element that is selected by a user |
| :target
| #news:target
| Selects the current active #news
element (clicked on a URL containing that anchor name) |
| :valid
| input:valid
| Selects all input elements with a valid value |
| :visited
| a:visited
| Selects all visited links |
Hi there and thanks for reading! My name's Stephen. I live in Chicago with my wife, Kate, and dog, Finn. Want more? See about and get in touch!