新知|原生 CSS 中类似 Sass 的嵌套

如果你和我一样觉得 Sass 的 CSS 嵌套功能非常有用,那么你一定会很高兴地知道,我们的好日子就要来了。

因此,如果你不知道,Sass 的 CSS 嵌套功能允许您将 CSS 选择器嵌套在其他选择器中。例如,你可以这样写:

css 复制代码
.parent {
    .child {
        color: red;
    }
}

这将被编译成以下 CSS。

css 复制代码
.parent .child {
    color: red;
}

当你想为某一特定元素编写 CSS 时,如果该元素是另一元素的子元素,这就非常有用了。你不必反复编写父选择器。只需将子选择器嵌套在父选择器中就可以了。

原生 CSS 嵌套

现在,原生 CSS 也出现了类似的功能。 CSS 嵌套模块现已在 Safari 技术预览版 162 和 Chrome Dev 中附带(通过在浏览器中启用"Experimental Web Platform features(实验性 Web 平台功能)"标志)。

启用后,你可以像这样在原生 CSS 中编写上述类似 Sass 的代码。

css 复制代码
.parent {
    .child {
        color: red;
    }

    #childWithId {
        color: red;
    }
}

很整洁,对吧?

但也有一些注意事项。

局限性

要使用 CSS 嵌套,你必须嵌套仅以以下符号开头的选择器:.:[>+~#*。这是因为浏览器解析 CSS 的方式。如果你嵌套的选择器不以上述任何符号(例如 pspan、`div`` 等)开头,则嵌套将被忽略。

为了解决这个问题,你可以在子选择器前面添加 & ,如下所示。

css 复制代码
.parent {
    & span {
        color: red;
    }
}

上面的代码将被编译成下面的CSS。

css 复制代码
.parent span {
    color: red;
}

这也适用于如下场景。

css 复制代码
ul {
  padding-left: 1em;
}

.component ul {
  padding-left: 0;
}

可以看出,这里的 ul 选择器并没有嵌套在 .component 选择器中。

要使 ul 选择器嵌套在 .component 选择器内,您可以将 & 附加到 .component 选择器,如下所示。

css 复制代码
ul {
  padding-left: 1em;

  .component & {
    padding-left: 0;
  } 
}

差不多就是这样了!

由于 CSS Nesting Module 仍处于草案阶段,因此不建议在生产中使用它。但很高兴知道,一旦该功能足够成熟,它就会出现在原生 CSS 中。

在此之前,您可以在支持的浏览器之一中对其进行测试,并在 bugs.webkit.orgbugs.chromium.org 上提交你的反馈或问题。

相关推荐
专注VB编程开发20年2 小时前
Excel软件界面美化-WEBUI-webbrowser内核
css·excel·vba·webui
じòぴé南冸じょうげん2 小时前
若依框架favicon.ico缓存更新问题解决方案:本地生效但线上未更新
前端·javascript·前端框架·html
狮子座的男孩2 小时前
js基础高级:01、数据类型(typeof、instanceof、===的使用)、数据与变量与内存(定义、赋值与内存关系、引用变量赋值、js调函数传参)
前端·javascript·经验分享·数据类型·数据与变量与内存·赋值与内存关系·引用变量赋值
Cyclo-5 小时前
PDFJS 在React中的引入 使用组件打开文件流PDF
前端·react.js·pdf
椒盐螺丝钉7 小时前
Vue Router应用:组件跳转
前端·javascript·vue.js
顾安r7 小时前
11.20 开源APP
服务器·前端·javascript·python·css3
敲敲了个代码8 小时前
CSS 像素≠物理像素:0.5px 效果的核心密码是什么?
前端·javascript·css·学习·面试
少云清8 小时前
【软件测试】5_基础知识 _CSS
前端·css·tensorflow
倔强青铜三8 小时前
AI编程革命:React + shadcn/ui 将终结前端框架之战
前端·人工智能·ai编程
天外飞雨道沧桑9 小时前
前端开发 Cursor MCP 提效工具配置
前端·vscode·ai编程·开发工具·cursor