search
HomeWeb Front-endCSS TutorialDetailed explanation of new usage of CSS selectors

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:


Implementation method of CSS selector field parsing

Detailed explanation of CSS selector Selector

CSS selector with Solution to dot (.)

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!

Statement
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Anchor Positioning Just Don't Care About Source OrderAnchor Positioning Just Don't Care About Source OrderApr 29, 2025 am 09:37 AM

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

What does margin: 40px 100px 120px 80px signify?What does margin: 40px 100px 120px 80px signify?Apr 28, 2025 pm 05:31 PM

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

What are the different CSS border properties?What are the different CSS border properties?Apr 28, 2025 pm 05:30 PM

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

What are CSS backgrounds, list the properties?What are CSS backgrounds, list the properties?Apr 28, 2025 pm 05:29 PM

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.

What are CSS HSL Colors?What are CSS HSL Colors?Apr 28, 2025 pm 05:28 PM

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.

How can we add comments in CSS?How can we add comments in CSS?Apr 28, 2025 pm 05:27 PM

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.

What are CSS Selectors?What are CSS Selectors?Apr 28, 2025 pm 05:26 PM

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.

Which type of CSS holds the highest priority?Which type of CSS holds the highest priority?Apr 28, 2025 pm 05:25 PM

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.

See all articles

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Atom editor mac version download

Atom editor mac version download

The most popular open source editor

DVWA

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

VSCode Windows 64-bit Download

A free and powerful IDE editor launched by Microsoft

MantisBT

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

Zend Studio 13.0.1

Powerful PHP integrated development environment