我有一个导航菜单,根据菜单层次/分类中的深度为菜单项分配一系列颜色。因此,例如,所有顶级菜单项都会变为黑色,下一级变为红色,下一级变为绿色等,并且由于层次结构非常深,我想使用数学来定位它们,有点像css可以针对n-child。但是,我不能使用nth-child,因为这些容器元素('browse-level')是从DOM中动态添加和删除的(它们不是同时存在于DOM中)这就是为什么我的目标数据属性。
所以这是CSS:
.browse-level[data-level="1"] li a {
background: @level1;
}
.browse-level[data-level="2"] li a {
background: @level2;
}
.browse-level[data-level="3"] li a {
background: @level3;
}
.browse-level[data-level="4"] li a {
background: @level4;
}
...等
有8个颜色值(之后序列会重复)。我可以(使用LESS或纯CSS)缩短此代码吗?
答案 0 :(得分:5)
我会选择
@level1: #aaa;
@level2: #bbb;
@level3: #ccc;
@level4: #ddd;
@level5: #eee;
@level6: #fff;
@level7: #000;
@level8: #111;
.mymixin(@lev) when ( @lev > 0 ) {
@ruleNameA: e('.browse-level[data-level="');
@ruleNameB: e('"] li a');
@{ruleNameA}@{lev}@{ruleNameB} {
@bgAux: e('level@{lev}');
background: @@bgAux ;
}
.mymixin( @lev - 1 ) ;
}
.mymixin(8);
根据http://less2css.org/它产生:
.browse-level[data-level="8"] li a {
background: #111111;
}
.browse-level[data-level="7"] li a {
background: #000000;
}
.browse-level[data-level="6"] li a {
background: #ffffff;
}
.browse-level[data-level="5"] li a {
background: #eeeeee;
}
.browse-level[data-level="4"] li a {
background: #dddddd;
}
.browse-level[data-level="3"] li a {
background: #cccccc;
}
.browse-level[data-level="2"] li a {
background: #bbbbbb;
}
.browse-level[data-level="1"] li a {
background: #aaaaaa;
}