美文网首页
css原生嵌套规则和@scope作用域用法

css原生嵌套规则和@scope作用域用法

作者: keknei | 来源:发表于2023-12-03 18:10 被阅读0次

css原生嵌套规则
其实,CSS嵌套和 SassLess 的嵌套类似
css原生嵌套规则可以将选择器嵌套到另一个选择器中,但是必须是以符号开头,例如&(父级(.box)本身自己) , .(class选择器) , #(id选择器) , @(媒体查询) , : , :: , + , > , ~ , *, [ 开头。
也就是说嵌套的选择器中不能以html元素标签为开头,例如下面这样,是不起作用的

.box{
  h1{
    color: yellowgreen;
  }
}

如果想要起作用,标签前面必须得加上&

.box{
  & h1{
    color: yellowgreen;
  }
}

还有一种情况也需要注意,就是嵌套伪类选择器时,加&的区别:

.box{
  ::after{}
  :hover{
    color: red;
  }
  :target{}
}

不加&就会选择所有的子孙元素,而不是父级(.box)本身,加&就是父级(.box)本身

.box{
  &::after{}
  &:hover{
    color: red;
  }
  &:target{}
}

css原生@scope作用域用法
@scope的语法规则

@scope [(<scope-start>)]? [to (<scope-end>)]? {
  <rule-list>
}

下面举几个例子

  1. 第一个例子
<div class="box">
  <div class="red">我是red-1</div>
  <div class="blue">我是blue</div>
</div>
<div class="red">我是red-2</div>
@scope (.box){
  .red{
    color:red;
  }
}
第一个例子.png

在这个例子中,.red 的样式只会作用在.box 里面,不会影响到外面的 .red使用的语法是@scope (.box)

  1. 第二个例子
<div class="box">
  <div class="red">我是red-1</div>
  <div class="item">
    <div class="red">我是red-2</div>
  </div>
  <div class="red">我是red-3</div>
  <div>
    <div class="red">我是red-4</div>
  </div>
</div>
<div class="red">我是red-5</div>
@scope (.box) to (.item){
  .red{
    color: red;
  }
}
第二个例子.png

这个例子使用了完整的@scope (<scope-start>) to (<scope-end>) 语法,.red的样式只会作用在.box里面,但是不会作用在.item里面

  1. 第三个例子
<div>
  <div>
    <style>
      @scope{
        .red{
          color: red;
        }
      }
    </style>
    <div class="red">我是red-1</div>
    <div class="red">我是red-2</div>
  </div>
  <div class="red">我是red-3</div>
</div>
第三个例子.png
这个例子中,style标签写在HTML结构中,只写了@scope,省略了 <scope-start>,它就会自动以style的父元素的位置控制作用域。

目前chrome118已经支持了,相信这么好用的东西,各大浏览器后续都会跟进支持,真是春天呢,lesssass估计慢慢就退出历史舞台了

相关文章

  • mybatis

    原生mybatis 核心类 SqlSessionFactory SqlSession 作用域(Scope)和生命...

  • c++ 双冒号(::) 学习

    :: 表示作用域,有3种使用方式: global scope(全局作用域符),用法(::name) class ...

  • vue中使用sass和less

    sass和less都是css的预编译处理语言,他们引入了mixins,参数,嵌套规则,运算,颜色,名字空间,作用域...

  • 浅谈JS作用域链

    浅谈JS作用域链 作用域 作用域(scope)就是变量访问规则的有效范围。作用域外,无法引用作用域内的变量;离开作...

  • Javascript 中的作用域与作用域链

    一、作用域(scope) 所谓作用域就是:变量在声明它们的函数体以及这个函数体嵌套的任意函数体内都是有定义的。作用...

  • 作用域/作用域链 闭包及其使用

    一、作用域、作用域链 作用域(scope) 浅显的理解: 作用域就是变量的可用范围(scope) 为什么要有作用域...

  • angular之中,$scope $rootScope $wat

    1.背景介绍 1、AngularJS Scope(作用域) Scope(作用域)是应用在 HTML (视图)和 J...

  • Javascript 运行上下文和作用域链

    一、作用域Scope和上下文Context 在javascript中,作用域scope和上下文context是两个...

  • 4. 作用域链与闭包

    作用域 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子...

  • 关于作用域和作用域链

    作用域 在JavaScript中,我们可以将作用域定义为一套规则,这套规则用来管理引擎如何在当前作用域以及嵌套的子...

网友评论

      本文标题:css原生嵌套规则和@scope作用域用法

      本文链接:https://www.haomeiwen.com/subject/iegkgdtx.html