sass - 是否有 SCSS 'no-op' 选择器?
问题描述
在 Sass/SCSS 中,有没有办法像这样包装现有规则:
.foo {
color: red;
}
产生这样的输出:
.foo,
.bar .foo {
color: red;
}
?
我知道您可以使用父选择器来完成此操作:
.foo {
&,
.bar & {
color: red;
}
}
但这需要修改现有规则。理想情况下,你可以从根本上做一些像这样神奇的事情:
@noop,
.bar {
.foo {
color: red;
}
}
(我已经尝试过@at-root
,但这在列表选择器中不起作用,并且只是一个&符号&
在根目录中不起作用)
解决方案
如果你想包装一个类而不修改它,你需要创建一个从该类扩展的 mixin。
我在这里创建的 mixin 允许将列表作为参数传递,以便放置多个选择器。
@mixin wrap($content){
@if (type-of($content) == string){
& #{$content} {
@extend #{$content};
}
}@else if (type-of($content) == list){
@each $class in $content{
& #{$class} {
@extend #{$class};
}
}
}
}
.red {
color: red;
}
.blue {
color: blue;
}
.wrap-1{
@include wrap('.red' '.blue');
}
.wrap-2{
@include wrap('.red');
}
输出:
.red, .wrap-2 .red, .wrap-1 .red {
color: red;
}
.blue, .wrap-1 .blue {
color: blue;
}
推荐阅读
- react-native - 我无法打开现有的 react-native 项目
- arangodb - 如何在一个 AQL 中获取所有父母和所有子女(包含所有子女或孙子女等)
- amazon-web-services - AWS ElasticSearch Service - 从 CF 模板设置加密选项
- javascript - 我可以删除可配置为假的属性吗?
- python - 如何在不使用 biopython 的情况下编写脚本来汇总多 fasta 文件中的信息?
- angular - 角度表单验证不显示错误消息
- python - PyMongo - 无法连接到本地主机?
- python - 如何从内存中包含 .wav 文件的 zipfile 播放 HTML 页面上的音频文件?
- arrays - 如果在数组中找到特定对象,如何返回 true?
- c++ - OpenCV 中 Sobel 代码的本地化是什么?