Sco*_*ttS 18
在大多数情况下,您无法直接执行此操作(请参阅第二个示例以了解异常).
如果祖父母是一个元素
这需要一些重复,但允许祖父母不是最外面的包装(所以可能有一个伟大的祖父母).
减
grandparent {
/* grandparent styles */
parent {
/* parent styles */
child {
/* child styles */
}
}
&.specialGrandpa {
child {
/* child styles with special Grandpa */
}
}
&.specialGrandma {
child {
/* child styles with special Grandma*/
}
}
}
Run Code Online (Sandbox Code Playgroud)
CSS输出
grandparent {
/* grandparent styles */
}
grandparent parent {
/* parent styles */
}
grandparent parent child {
/* child styles */
}
grandparent.specialGrandpa child {
/* child styles with special Grandpa */
}
grandparent.specialGrandma child {
/* child styles with special Grandma*/
}
Run Code Online (Sandbox Code Playgroud)
如果祖父母是一个类,ID等,并且是最外层的包装器
这里不涉及重复,但你great grandparent不能混合使用.此外,这仅适用于LESS 1.3.1+版本(早期版本错误地添加空格):
减
.grandparent {
/* grandparent styles */
.parent {
/* parent styles */
.child {
/* child styles */
.specialGrandparent& {
/* child styles with special grandparent*/
}
}
}
}
Run Code Online (Sandbox Code Playgroud)
CSS输出
.grandparent {
/* grandparent styles */
}
.grandparent .parent {
/* parent styles */
}
.grandparent .parent .child {
/* child styles */
}
.specialGrandparent.grandparent .parent .child {
/* child styles with special grandparent*/
}
Run Code Online (Sandbox Code Playgroud)
此代码通过附加到祖父母选择器的"前"来工作,这就是祖父母必须是类,ID或其他选择器本身的原因.
附录
基于评论关于在span空的时候有红色背景的愿望.这不会将背景放在父级上,而是使用子级"伪造"它.
span:empty:after {
content: '';
position: absolute;
top: -1px;
right: -10px;
left: -1px;
bottom: -10px;
display: block;
background-color: red;
z-index: -1;
}
Run Code Online (Sandbox Code Playgroud)
据LESS的父母选择功能,它可能改变选择顺序通过将& 后的项目在你的窝,从而获取该项目的父亲的父亲。
更少的代码:
span {
color:red;
h6 & {
color:white;
div & {
color:blue;
}
}
}
Run Code Online (Sandbox Code Playgroud)
CSS结果:
span {
color: red;
}
h6 span {
color: white;
}
div h6 span {
color: blue;
}
Run Code Online (Sandbox Code Playgroud)