是否可以获得父母的父母?
我试过了& & { }
,但这没效果。
我正在尝试根据它的祖父母来设置子元素的样式。
答案 0 :(得分:18)
在大多数情况下你不能直接这样做(参见第二个例子)。
如果祖父母是元素
这需要一些重复,但允许祖父母不是最外层的包装器(所以可能有一个伟大的祖父母)。
的 LESS 强> 的
grandparent {
/* grandparent styles */
parent {
/* parent styles */
child {
/* child styles */
}
}
&.specialGrandpa {
child {
/* child styles with special Grandpa */
}
}
&.specialGrandma {
child {
/* child styles with special Grandma*/
}
}
}
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*/
}
如果祖父母是班级,身份证等,并且是最外层包装
此处不涉及重复,但您不能在混合中使用great grandparent
。此外,这仅适用于LESS 1.3.1+版本(早期版本错误地添加空格):
的 LESS 强> 的
.grandparent {
/* grandparent styles */
.parent {
/* parent styles */
.child {
/* child styles */
.specialGrandparent& {
/* child styles with special grandparent*/
}
}
}
}
CSS输出
.grandparent {
/* grandparent styles */
}
.grandparent .parent {
/* parent styles */
}
.grandparent .parent .child {
/* child styles */
}
.specialGrandparent.grandparent .parent .child {
/* child styles with special grandparent*/
}
此代码通过附加到祖父母选择器的“前面”来工作,因此祖父母必须是类,ID或其他选择器本身。
<强>附录强>
根据span
为空时希望获得红色背景的评论。这不会将背景放在父级上,而是使用孩子“假装”它。
span:empty:after {
content: '';
position: absolute;
top: -1px;
right: -10px;
left: -1px;
bottom: -10px;
display: block;
background-color: red;
z-index: -1;
}
答案 1 :(得分:7)
您不能使用较少的选择器任意遍历DOM。改为使用javascript。
较少的&
代表声明的选择器一级。已定义规则的快捷方式。与你所谓的寻求相反。
答案 2 :(得分:4)
根据LESS的parent selectors feature,可以通过在项目中放置&
来更改选择器顺序,从而访问item的父母的父母。
LESS代码:
span {
color:red;
h6 & {
color:white;
div & {
color:blue;
}
}
}
CSS结果:
span {
color: red;
}
h6 span {
color: white;
}
div h6 span {
color: blue;
}
答案 3 :(得分:2)
您可以使用mixin,然后您可以根据祖父母选择器细节将变量传递给它。
示例:
ul {
.color-links(@color) {
li a { // any link inside a child li
color: @color;
}
}
&.red {
.color-links(#ff0000);
}
&.green {
.color-links(#00ff00);
}
}