减少CSS:&有多个班级的反向父母?

时间:2012-10-30 19:57:32

标签: less

这是我第一次找到&父选择器非常有用,所以我不需要重新定义父母只是修改子元素。

当然这对于LESS来说实际上很容易,但我不得不问!

<div id="skrollr-body" class="nonav">
    <div class="skrollable">

    </div>
</div>


#skroller-body {
    .skrollable {
        margin-top:40px;

        .nonav & {
            // this parent selector lets me modify 
            // .skrollable without duplicating it
            margin-top:0px;

        }
    }
}

.nonav &的输出是 .nonav #skroller-body .skrollable

我想知道如果没有额外的HTML标记(包装器#skroller-body.nonav .skrollable)我是否可以获得div.nonav

目前我只会复制父

#skrollr-body {
    margin-top:40px;
    left:0;
    width:100%;

    .skrollable {
        margin-top:40px;
        position:fixed;
        z-index:100;
        .skrollable {
            position:absolute;

            .skrollable {
                position:static;
            }
        }
    }
    &.nonav {
            .skrollable {
                 margin-top:0px;
            }
    }
}

或者保存冗余输出;

#skroller-body.nonav .scrollable { margin-top:0px; }

但这里的重点是CSS代码易于维护和阅读

1 个答案:

答案 0 :(得分:5)

The docs tell us:

  

&运算符表示嵌套规则的父选择器   在应用修改类或伪类时最常用   到现有的选择器

所以:

#skroller-body {
        &.nonav {
            .skrollable {
                // stuff
            }
        }
    }
}