css - 是否可以将 &:after 添加到 SASS 中的父级?
问题描述
我正在尝试清理我之前编写的一些 SCSS 代码,那时我并不真正关心冗余代码,所以我写了这样的东西:
.example {
.child {
.grandchild {
//CSS CODE
}
}
&:nth-child(odd) {
.child {
.grandchild {
//CSS CODE
}
}
}
}
现在我正在重构一些代码并尝试做这样的事情:
.example {
.child {
.grandchild {
//CSS CODE
&:nth-child(odd) & {
//CSS CODE
}
}
}
}
编译成这样的东西:
.example .child .grandchild:nth-child(odd) .example .child .grandchild
但我想要的是这样的:
.example:nth-child(odd) .child .grandchild
这可能与 SCSS 或我应该坚持我以前的代码?
解决方案
在规则中间插入新的修饰符并不是 Sass 的真正特性。通常,您只能在开头或结尾添加内容。此外,@at-root指令允许您“重置”当前上下文。
因此,您总是必须组织您的代码,以便将这些片段“分块”以允许在开头或结尾插入。
所以这样的事情可能会起作用:
.example {
color: yellow;
@at-root {
.child {
.grandchild {
.example & {
color: red;
}
.example:nth-child(odd) & {
color: blue;
}
}
}
}
}
编译为:
.example {
color: yellow;
}
.example .child .grandchild {
color: red;
}
.example:nth-child(odd) .child .grandchild {
color: blue;
}
推荐阅读
- javascript - 在 enduro.js CMS 中包含外部 js
- html - 通过 Excel VBA 按下应用按钮时未检测到网页搜索过滤器输入
- javascript - jQuery 表单验证检查以循环结束
- android - 安卓指纹示例中的 quadTo
- javascript - 在 Angular 1 和 Angular 2 应用程序之间共享数据
- javascript - 在 ionic v1 中滚动到 div 时修复它
- bash - 用于变量多重扩展的 for 循环
- android - Android P 会广播两次来电,还是只有我一个人?
- amazon-web-services - 从 AWS lambda 函数命中另一个账户中的 EC2 实例
- python - 函数不识别库