Unlock the Power of CSS Selectors
CSS selectors are a fundamental part of styling web pages, allowing you to target specific HTML elements and apply styles. The latest generation of selectors, known as Level 4, offers even more powerful and flexible ways to select elements. In this article, we’ll dive into the world of Level 4 selectors and explore their capabilities.
Logical Combinations
Level 4 introduces three new logical combination selectors: :not()
, :is()
, and :where()
. These selectors allow you to combine multiple selectors to create more complex selection rules.
:not(selector1, selector2, …)
selects elements that don’t match any of the specified selectors.:is(selector1, selector2, …)
selects elements that match any of the specified selectors.:where(selector1, selector2, …)
is similar to:is()
, but neither the selector nor its arguments contribute to the specificity of the selector.
Attribute Selectors
Level 4 attribute selectors allow you to select elements based on their attributes. Two new selectors have been added:
[foo="bar" i]
selects elements whosefoo
attribute value is exactly equal tobar
, regardless of case.[foo="bar" s]
selects elements whosefoo
attribute value is exactly and case-sensitively equal tobar
.
Linguistic Pseudo-Classes
Level 4 introduces two new linguistic pseudo-classes:
:dir(ltr)
selects elements with left-to-right directionality.:lang(zh, "*-hant")
selects elements tagged as being in Chinese or written with traditional Chinese characters.
Location Pseudo-Classes
Level 4 location pseudo-classes relate to hyperlinks. Two new selectors have been added:
:any-link
selects all elements that have anhref
attribute.:local-link
selects elements that target the current URL.
User Action Pseudo-Classes
Level 4 user action pseudo-classes apply to elements the user is acting on. Two new selectors have been added:
:focus-within
selects elements that either match the:focus
pseudo-class or have children that match:focus
.:focus-visible
selects an element if it’s currently focused and the browser determines that the focus should be made evident on the element.
Input Pseudo-Classes
Level 4 input pseudo-classes apply to elements that take user input. Several new selectors have been added, including :read-write
, :read-only
, :placeholder-shown
, :default
, :indeterminate
, :valid
, :invalid
, :in-range
, and :out-of-range
.
Tree-Structural Pseudo-Classes
Level 4 tree-structural pseudo-classes allow selection based on information that lies in the document tree. Two new selectors have been added:
:nth-child(n [of selector]?)
and:nth-last-child(n [of selector]?)
select elements based on their position relative to their parent.:nth-col(An+B)
and:nth-last-col(An+B)
select elements based on their column position in a grid or table.
Grid-Structural Selectors
Level 4 grid-structural selectors work with columns of a table. Two new selectors have been added:
F || E
selects an element of typeE
that represents a cell in a table and belongs to a column represented by an element of typeF
.:nth-col(An+B)
and:nth-last-col(An+B)
select elements based on their column position in a grid or table.
Conclusion
Level 4 selectors offer a wide range of new possibilities for selecting elements in your HTML documents. By mastering these selectors, you can create more complex and flexible stylesheets that improve the user experience of your web applications.