美文网首页
css中使优先级下降,@layer规则使用

css中使优先级下降,@layer规则使用

作者: keknei | 来源:发表于2022-06-28 11:20 被阅读0次

@layer的作用可以让 CSS 声明的优先级下降一整个级联级别

比如说我们用了一些ui的框架,但是在实际开发当中,ui的框架颜色和项目的主题颜色不对,就需要修改ui的颜色,例如原来的框架的btn按钮背景颜色是

.el-button--primary {
  background: #409EFF;
}

我们要修改成红色,就需要添加优先级去覆盖上面的css

body .el-button--primary {
  background: red;
}

但是这样就显得代码又长又罗嗦,甚至还会影响别的元素样式,所以@layer就横空出世,喜大普奔了,如果我们将ui里的css优先级降低,我们直接设置css就可以了,不用提高优先级

/*此时的@layer里的css优先级是降了一级的*/
@layer{
    .el-button--primary {
        background: #409EFF;
    }
}

然后我们直接设置css就可以了,这样就可以把ui里的css样式覆盖掉

.el-button--primary {
  background: red;
}
@layer4种语法规则

1. @layer layer-name {rules};
2. @layer layer-name;
3. @layer layer-name, layer-name, layer-name;
4. @layer {rules};

  • @layer layer-name {rules}使用
<p id="text">我是要显示的内容</p>

如果size1和size2有重复的css,最后会显示size2设置的css,也就是说后面的优先级大于前面的优先级

@layer size1{
  #text{
    font-size:20px;
  }
}

@layer size2{
  #text{
    font-size:40px;
  }
}
  • @layer layer-name使用
    主要是用来灵活设置 @layer 规则和其他 @layer 规则的前后优先级。
    可以把需要降低css优先级的放到@layer中,如果有多个@layer的话需要排序,就可以利用名称排序了
@layer size;
/*
 css
*/
@layer size{
  #text{
    font-size:20px;
  }
}

  • @layer layer-name, layer-name, layer-name使用
    如果layer多的话,想要调整layer优先级,就可以利用名称排序了
@layer size2,size1;
@layer size1{
  #text{
    font-size:20px;
  }
}

@layer size2{
  #text{
    font-size:40px;
  }
}

如果size1和size2有重复的css,最后会显示size1设置的css,也就是说@layer size2,size1后面name的优先级大于前面name的优先级

  • @layer {rules}使用
    单纯的将需要降级的css放到layer中,会降低优先级
#text{
  color:red;
}
@layer{
   #text{
     color:blue;
   }
}
整个文件都降低优先级,让整个css文件都变成layer

此时应当注意,@import "url"应该放在css的最上方,不然不起作用,可以命名,名称可以自己随意定义,如果layer多的话,想要调整layer优先级,就可以利用名称排序了

@layer lib2,lib1;
@import './lib.css' layer(lib1);
@layer lib2{
  .lib{
    padding:20px;
  }
}

也可以匿名.layer就是一个关键字了,而不是一个方法

@import './lib.css' layer
link标签引入css的使用layer

同样,支持自定义名称,也支持匿名用法。

<link rel="stylesheet" href="/index.css" layer="index">
<link rel="stylesheet" href="/index.css" layer>
嵌套layer的规则
@layer A{
  p{
    color:red;
  }
  @layer B{
    p{
      color:blue;
    }
  }
}

@layer C{
  p{
    color:orange;
  }
  @layer D{
    p{
      color:green;
    }
  }
}

嵌套layer的规则:
每多一层 @layer,则样式的优先级就下降一层,内部的 @layer 的优先级由外部的 @layer 规则决定。
所以以上的优先级是这样的: C>D>A>B

上面layer A的嵌套也可以写成这样:

@layer A{
  p{
    color:red;
  }
}
@layer A.B{
  p{
    color:blue;
  }
}

相关文章

  • css中使优先级下降,@layer规则使用

    @layer的作用可以让 CSS 声明的优先级下降一整个级联级别 比如说我们用了一些ui的框架,但是在实际开发当中...

  • css 基本

    css基本 在HTML中使用CSS(引入CSS) 样式优先级(从高到低) 选择器 没有选择器就没法确定样式的作用范...

  • CSS常见问题

    CSS优先级算法如何计算? 样式优先级规则: 优先级顺序为:!important>style>权重值权重规则:第一...

  • css的优先级到底是怎么计算的呢?

    浏览器计算css优先级一共有三个阶段 优先级计算的顺序⬇️ CSS规则的重要性和来源 CSS规则的特殊性 CSS规...

  • CSS样式优先级

    遵循以下优先级(参考MDN CSS优先级) 以下顺序按照优先级递减的规则排列 !important规定的规则(不建...

  • 在Vue中如何修改v-html中的样式

    css中使用>>> scss中使用::v-deep 1. css 2. scss

  • CSS的优先级

    CSS 中的优先级也叫做特异性,浏览器使用它来判断在元素上使用何种属性,优先级是基于不同的选择器组合而成的匹配规则...

  • vue零基础开发023——Vue中使用animate.css

    【在Vue中使用keyframes】 【Vue中使用animate.css】

  • uniapp条件编译使用

    uniapp支持的各个平台对应的值 解析 js中用法 标签中使用 css中使用 json中使用

  • 前端面试题之CSS(一)

    1.@charset是做什么的? 概述 @charset CSS @规则 指定样式表中使用的字符编码。它必须是样...

网友评论

      本文标题:css中使优先级下降,@layer规则使用

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