未被 @layer 包裹的样式 > @layer C > @layer B > @layer A
匿名层与嵌套层还有两种层级关系 , 分别是匿名层和嵌套层 。
匿名层允许创建一个不带名字的 @layer:
@layer { p { margin: 1rem; }}这里 , 创建了一个匿名层 。 匿名层的两个重要特性:
- 创建后无法向其再添加规则
该层和其他命名层功能一致 , 优先级也遵循后定义的匿名层 , 比其他已定义的 @layer 层 , 优先级更高
<div></div>div { width: 200px; height: 200px;}@layer { div { background: pink; }}@layer B, C, A;@layer A { div { background: blue; }}@layer B { div { background: green; }}@layer C { div { background: orange; }}上述代码 , 我们首先定义了一个匿名层 , 指定了 div 的颜色为
pink
, 而后又定义了 @layer B, C, A
。 这里优先级顺序为: A > C > B > 匿名层
最终的颜色为 @layer A 内的颜色值 --
blue
: 文章插图
如果 , 我们将匿名层放在最后的话:
div { width: 200px; height: 200px;}@layer B, C, A;@layer A { div { background: blue; }}@layer B { div { background: green; }}@layer C { div { background: orange; }}@layer { div { background: pink; }}此时 , 样式的优先级顺序为:
匿名层 > A > C > B
最终的颜色为匿名层内的颜色值 --
pink
: 文章插图
嵌套层说完了匿名层 , 我们再来看看嵌套层 。
顾名思义 , 嵌套层的意思就是在 @layer 内部 , 我们可以再嵌套使用 @layer 级联层 。 像是这样:
@layer A { @layer B{ ... }}当然 , 它还有另外一种语法 , 上述代码等价于:
@layer A.B { ...}了解了这个后 , 那么 , 看这样一个例子:
<div></div>div { width: 200px; height: 200px;}@layer A { div { background: blue; } @layer B { div { background: red; } }}我们在 @layer A 中嵌套一个 @layer B , 同时都定义了一个 div 的样式 , 最终 div 的
background
到底是什么颜色呢? 最终为蓝色
background: blue
, 为什么呢?这个很好记忆 , 我们假设如果没有 @layer A 这一层包裹 , 其实就是上述说的 @layer 层与非 @layer 层的优先级比较 , 这里 , 非 @layer 层(我们可以理解为更高级别的一层 @layer)的优先级更高 。 因此 , 对于单个 @layer 内的嵌套关系 , 样式优先级为:
@layer A > @layer A.B
多层嵌套层的优先级关系OK , 再看这样一种情况:
div { width: 200px; height: 200px;}@layer A { div { background: blue; } @layer B { div { background: red; } }}@layer C { div { background: yellow; } @layer D { div { background: green; } }}这里存在同时存在多个嵌套 @layer 的情况 。 那么这种情况优先级又是如何划分呢?
这里的规则是 , 优先级高的 @layer , 无论是否存在嵌套 , 优先级都整体比优先级低的 @layer(无论是否存在嵌套)高 , 因此 , 这里的优先级排序是:
@layer C > @layer C.D > @layer A > @layer A.B
!important 对 CSS @layer 的影响再来看看 !important 对 CSS @layer 的影响 。
这里可以分为几种情况 , 先看其中一种:
<div></div>div { width: 200px; height: 200px; background: black;}@layer A { div { background: blue; } @layer B { div { background: red; } }}@layer C { div { background: yellow; } @layer D { div { background: green!important; } }}上述代码 , 我们给 @layer C.D 的
<div>
添加了一个 !important
规则 。 如果 , 不考虑
!important
规则 , 那么实际的 CSS 优先级为(序号越高 , 优先级越高): - @layer A.B
@layer A
@layer C.D
@layer C
非 layer 包裹块
<div>
的颜色应该为黑色 black
。 然而 , 这里给 @layer C.D 的 <div>
添加了一个 !important
规则 。 实际上 , 最终
<div>
的颜色为 green
, 也就是最终的优先级排序为(序号越高 , 优先级越高):
推荐阅读
- CPU作为电脑的中心枢纽,其作用就相当于我们的人脑一样,而且CPU价格也很贵。所以,我们不时一定要好好保养CPU。下面小编就来给大家介绍与CPU保养相关
- 系统还原在哪 如何打开系统还原新系统了解的东西
- 战魂铭人蓝拳怎么玩-蓝拳玩法及获取攻略您需要了解的
- FHD是指的什么 FHD是什么意思新系统了解的东西
- 带你了解互联网发展趋势 互联网发展趋势
- 中华历史 五千年悠悠岁月 沧桑巨变 助你了解更多故事
- 文件在哪 怎样打开文件新系统了解的东西
- win7vista appdata文件夹是什么东西 可以删除吗新系统了解的东西
- 电脑中无法修改窗口颜色怎么办?新系统了解的东西
- 浏览网站时弹出此网站的安全证书有问题的解决方法新系统了解的东西