LessCss-匹配选择器的正确语法

LessCss-匹配选择器的正确语法,css,less,Css,Less,我有以下代码,我使用main作为扩展函数 .clear-left { > li:first-child { border-left:none; margin-left:0; padding-left:0; } } #footer ul { &:extend(.clear-left); } 我一直在研究如何使它更加健壮——就像在CSS中一样 在我的CSS视图中,更强大的选择器是: ul.clear-left

我有以下代码,我使用main作为扩展函数

.clear-left
{
    > li:first-child {
        border-left:none;
        margin-left:0;
        padding-left:0;
    }
}

#footer ul
{
    &:extend(.clear-left);
}
我一直在研究如何使它更加健壮——就像在CSS中一样

在我的CSS视图中,更强大的选择器是:

ul.clear-left
还是少用点

.inline-list.clear-left

    .inline-list
    {
        > li {
            float:left;
        }

        &:extend(.clearfix all);

    }
但是,选择器编译为:

ul#footer ul > li {
   // code here
}

我所描述的是可以实现的吗?

要扩展名为的公共代码块,请在需要类似属性设置的地方清除左侧并附加。在扩展选择器时清除左侧以使其更具体或更健壮,您可以使用以下选项之一:第一个选项是最首选的,最后一个是最少的

选项1:只需在扩展时将所需的类附加到父选择器。这里不需要对公共函数进行额外的更改。这是最简单的解决方案,也是我个人推荐的解决方案

.离开{ >李:第一个孩子{ 左边界:无; 左边距:0; 左侧填充:0; } } 页脚ul{ &.clear left:extend.clear-left all{};/*扩展时追加的类*/ } 选项2:与上面相同,但不使用括号将其作为mixin,只需将其作为包装器选择器的一部分进行包装,如下所示。在这里,由于它不完全是用作函数的mixin,因此可以对其进行扩展,并将选择器分组以避免重复。这种方法比下一种更好,但它会在输出中产生一个额外的选择器行

.一些包装纸{ &.离开{ >李:第一个孩子{ 左边界:无; 左边距:0; 左侧填充:0; } } } 页脚ul:extend.some-wrapper all{};/*“延伸”附加到选择器*/ 头ul:extend.some-wrapper all{}; 编译输出:

.some-wrapper.clear-left>li:第一个孩子,/*这是额外的选择器*/ 页脚ul.clear-left>li:第一个孩子, 标题ul.clear-left>li:第一个子项{ 左边界:无; 左边距:0; 左侧填充:0; } 选项3:将整个公共函数放在一个包装器mixin中,用父选择器作为前缀&并在需要时调用它。由于.clear-left追加到父选择器,因此在输出中,它将始终追加到根父选择器,在根父选择器中调用它,如本例中的.inline-list.clear-left。此方法的缺点是可以调用/调用mixin,但不能扩展,这意味着选择器不会分组,属性会一次又一次重复

.一些包装纸{ &.clear left{/*注意使用父选择器&*/ >李:第一个孩子{ 左边界:无; 左边距:0; 左侧填充:0; } } } .内联列表{ >李{ 浮动:左; } .some wrapper;/*调用mixin*/ }
现在有点不清楚你将得到什么CSS结果,以及你试图用多少代码来获得这个结果。内联列表…clearfix代码片段看起来很混乱,因为它几乎没有任何与ul的连接…clear left。