Detailed 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; }
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!

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

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



Using Bootstrap in Vue.js is divided into five steps: Install Bootstrap. Import Bootstrap in main.js. Use the Bootstrap component directly in the template. Optional: Custom style. Optional: Use plug-ins.

HTML defines the web structure, CSS is responsible for style and layout, and JavaScript gives dynamic interaction. The three perform their duties in web development and jointly build a colorful website.

There are two ways to create a Bootstrap split line: using the tag, which creates a horizontal split line. Use the CSS border property to create custom style split lines.

WebdevelopmentreliesonHTML,CSS,andJavaScript:1)HTMLstructurescontent,2)CSSstylesit,and3)JavaScriptaddsinteractivity,formingthebasisofmodernwebexperiences.

There are several ways to insert images in Bootstrap: insert images directly, using the HTML img tag. With the Bootstrap image component, you can provide responsive images and more styles. Set the image size, use the img-fluid class to make the image adaptable. Set the border, using the img-bordered class. Set the rounded corners and use the img-rounded class. Set the shadow, use the shadow class. Resize and position the image, using CSS style. Using the background image, use the background-image CSS property.

To adjust the size of elements in Bootstrap, you can use the dimension class, which includes: adjusting width: .col-, .w-, .mw-adjust height: .h-, .min-h-, .max-h-

To set up the Bootstrap framework, you need to follow these steps: 1. Reference the Bootstrap file via CDN; 2. Download and host the file on your own server; 3. Include the Bootstrap file in HTML; 4. Compile Sass/Less as needed; 5. Import a custom file (optional). Once setup is complete, you can use Bootstrap's grid systems, components, and styles to create responsive websites and applications.

How to use the Bootstrap button? Introduce Bootstrap CSS to create button elements and add Bootstrap button class to add button text
