重新使用级联层名称时层顺序保持不变的使@layer 语法变得更加方便和严谨 。使用它,可以预先建立图层顺序,然后将所有 CSS 附加到它:
@layer reset;/* 创建第一个级联层 “reset” */@layer base;/* 创建第二个级联层 “base” */@layer theme;/* 创建第三个级联层“theme” */@layer utilities; /* 创建第四个级联层 “utilities” */@layer reset { /* 添加样式至级联层 “reset” */…}@layer theme { /* 添加样式至级联层“theme” */…}@layer base { /* 添加样式至级联层“base” */…}@layer theme { /* 添加样式至级联层“theme” */…}
当然你可以用更短的语法来声明级联层,
@layer reset, base, theme, utilities;
从上面可以看出,多个级联层被声明时,最后一个级联层的声明会获胜 。像这样,
@import(reset.css) layer(reset); /* 第一个级联层 */@layer base { /* 第二个级联层 */form input {font-size: inherit;}}@layer theme { /*第三个级联层 */input {font-size: 2rem;}}
按以往CSS级联来进行分析的话,form input(多层级)的优先级会大于input,但是由于级联层所起的作用,@layer theme的input会取胜 。
级联层嵌套级联层支持嵌套使用,如下:
@layer base { /* 第一个级联层*/p { max-width: 70ch; }}@layer framework { /* 第二个级联层 */@layer base { /* 第二级联层的嵌套子级联层1 */p { margin-block: 0.75em; }}@layer theme { /* 第二级联层的嵌套子级联层2 */p { color: #222; }}}
在这个例子中有两个级联外层:
base
framework
该framework层本身也包含两层:
base
theme
如果要将样式附加到嵌套级联层,需要使用以下全名来引用它,
@layer framework {@layer default {p { margin-block: 0.75em; }}@layer theme {p { color: #222; }}}@layer framework.theme {/* 这些样式会被添加到@layer framework层里面的theme层 */blockquote { color: rebeccapurple; }}
@media与@layer@media (min-width: 30em) {@layer layout {.title { font-size: x-large; }}}@media (prefers-color-scheme: dark) {@layer theme {.title { color: white; }}}
如果第一个@media (min-width: 30em)匹配(基于视口尺寸),则layout级联层层将在图层顺序中排在第一位 。如果只有@media (prefers-color-scheme: dark)匹配,theme则将是第一层 。
如果两者匹配,则图层顺序将为layout, theme 。如果没有匹配,则不定义层 。
推荐阅读
- 一文了解在 Python 中如何使用列表推导
- 解决内网服务搭建太多,记不住网址的问题 | 内网应用仪表盘
- 浅表性胃炎能喝啤酒吗
- 思科与华为配置命令对照表
- MySQL表数据去重几个业务逻辑实现
- 无代码系统搭建——数据报表
- 医药销售代表如何接近客户
- 厌食症的表现
- |想让领导重视,又不想被同事排挤,我们需要用合适的方式表现自己
- 红茶对女人功效与作用,喝红茶的人代表什么作用