Now, preprocessors (such as sass) seem to have become the standard for developing CSS, just as jQuery was the standard for developing JS a few years ago. JS's querySelector draws on jQuery's selector ideas, and CSS selectors also draw on common functions such as preprocessor variable definition, selector nesting, and code block reuse. This article will introduce in detail the new usage of CSS selectors.
Variables
Generally, when we develop web, we will have a set of variable definition specifications, taking Sass as an example, as shown below
// 颜色定义规范 $color-background : #222 $color-background-d : rgba(0, 0, 0, 0.3) $color-highlight-background : #333 //字体定义规范 $font-size-small : 12px $font-size-medium : 14px $font-size-large : 18px
The syntax of CSS variables is as follows
【Declaration of variables】
Variables must start with --. For example, --example-variable: 20px means assigning 20px to the --example-varibale variable
. You can place the statement declaring the variable within any element. If you want to set a global variable, you can set it to: root, body or html
:root{--bgColor:#000;}
Variable declarations are just like ordinary style declaration statements, and inline styles can also be used
<body style="--bgColor:#000">
【Use variables】
Use the var() function to use variables, and can be used anywhere. For example: var(--example-variable) will return the value corresponding to --example-variable
<body style="--bgColor:#000;"> <p style="width: 100px;height: 100px;background-color: var(--bgColor)"></p> </body>
The var() function also has an optional parameter for Set the default value. When the variable cannot obtain the value, the default value is used
<p style="width: 100px;height: 100px;background-color: var(--bgColor,pink)"></p>
[Note] The detailed usage of CSS variables moves here
@apply
Before introducing @apply, let’s first introduce the mixing macro @mixin in sass, which refers to a code block that can be reused
For example, common The text overflow hides reuse
@mixin overflow-ellipsis{ overflow:hidden; text-overflow: ellipsis; white-space: nowrap; }; p { @include overflow-ellipsis; }
The application rule set @apply also implements a similar function. Compared with var(), @apply refers to a collection of styles, while var() refers to a single style value
:root{ --overflow-ellipsis:{ overflow:hidden; text-overflow: ellipsis; white-space: nowrap; }; } .title{ width:200px; @apply --overflow-ellipsis; }
Custom selector
Custom selectors are defined through @custom-selector, followed by:-- followed by the name of the custom selector, followed by the selectors that need to be defined, multiple ones separated by commas
@custom-selector :--heading h1, h2, h3, h4, h5, h6;
In this way, :--heading becomes a selector that can be used
##
:--heading{ margin: 0; } h1, h2, h3, h4, h5, h6{ margin: 0; }The above two pieces of code The effect is the same
Selector nesting
CSS rules contain a lot of repeated content##
table.colortable td { text-align:center; } table.colortable td.c { text-transform:uppercase; } table.colortable td:first-child, table.colortable td:first-child+td { border:1px solid black; } table.colortable th { text-align:center; background:black; color:white; }
Use nesting After the syntax, the code is as follows
table.colortable { & td { text-align:center; &.c { text-transform:uppercase } &:first-child, &:first-child + td { border:1px solid black } } & th { text-align:center; background:black; color:white; } }
When using nested style rules, you must be able to reference the element matched by the parent rule; it is the entire nesting point after all. To achieve this purpose, this specification defines a new selector, the nested selector, written as the ASCII symbol &
When used in a selector of a nested style rule, the nested selector is represented by The element matched by the parent rule. When used in any other context, it means nothing. (That is, it is valid, but does not match any elements)
[Note]&The two incorrect ways of writing nested selectors are as follows
.foo { color: red; .bar & { color:blue; } } .foo { color: red; &.bar, .baz { color: blue; } }
【@nest】
In order to solve the fragility of the above nested selector &, you can use the @nest selector. @nest can be applied to a wider range, as long as it works together with the nested selector & That’s it
.foo { color: red; @nest & > .bar { color: blue; } } //等价于 .foo { color: red; } .foo > .bar { color: blue; } .foo { color: red; @nest .parent & { color: blue; } } //等价于 .foo { color: red; } .parent .foo { color: blue; } .foo { color: red; @nest :not(&) { color: blue; } } //等价于 .foo { color: red; } :not(.foo) { color: blue; } [注意]@nest选择符的两种错误写法如下所示 .foo { color: red; @nest .bar { color: blue; } } .foo { color: red; @nest & .bar, .baz { color: blue; } }
Finally
Unfortunately, except for the CSS variable variable that can be used under the new version of chrome, other CSS None of the new uses of selectors are currently supported by browsers. However, the cssnext plug-in in the CSS post-processor postcss can solve all problems
Just like the cssnext official website says, start using tomorrow’s CSS syntax today
Related recommendations:
The above is the detailed content of Detailed explanation of new usage of CSS selectors. For more information, please follow other related articles on the PHP Chinese website!

The fact that anchor positioning eschews HTML source order is so CSS-y because it's another separation of concerns between content and presentation.

Article discusses CSS margin property, specifically "margin: 40px 100px 120px 80px", its application, and effects on webpage layout.

The article discusses CSS border properties, focusing on customization, best practices, and responsiveness. Main argument: border-radius is most effective for responsive designs.

The article discusses CSS background properties, their uses in enhancing website design, and common mistakes to avoid. Key focus is on responsive design using background-size.

Article discusses CSS HSL colors, their use in web design, and advantages over RGB. Main focus is on enhancing design and accessibility through intuitive color manipulation.

The article discusses the use of comments in CSS, detailing single-line and multi-line comment syntaxes. It argues that comments enhance code readability, maintainability, and collaboration, but may impact website performance if not managed properly.

The article discusses CSS Selectors, their types, and usage for styling HTML elements. It compares ID and class selectors and addresses performance issues with complex selectors.

The article discusses CSS priority, focusing on inline styles having the highest specificity. It explains specificity levels, overriding methods, and debugging tools for managing CSS conflicts.


Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Atom editor mac version download
The most popular open source editor

DVWA
Damn Vulnerable Web App (DVWA) is a PHP/MySQL web application that is very vulnerable. Its main goals are to be an aid for security professionals to test their skills and tools in a legal environment, to help web developers better understand the process of securing web applications, and to help teachers/students teach/learn in a classroom environment Web application security. The goal of DVWA is to practice some of the most common web vulnerabilities through a simple and straightforward interface, with varying degrees of difficulty. Please note that this software

VSCode Windows 64-bit Download
A free and powerful IDE editor launched by Microsoft

MantisBT
Mantis is an easy-to-deploy web-based defect tracking tool designed to aid in product defect tracking. It requires PHP, MySQL and a web server. Check out our demo and hosting services.

Zend Studio 13.0.1
Powerful PHP integrated development environment
