更少的CSS:和多个类的反向父级?

Yuj*_*ita 4 less

这是我第一次发现&parent选择器非常有用,所以我不需要重新定义父类只是修改子元素.

当然这对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;

        }
    }
}
Run Code Online (Sandbox Code Playgroud)

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

我想知道我是否可以在#skroller-body.nonav .skrollable没有额外的HTML标记(包装器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;
            }
    }
}
Run Code Online (Sandbox Code Playgroud)

或者保存冗余输出;

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

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

Mat*_*all 5

文档告诉我们:

&操作者表示嵌套规则的父选择器和施加改性类或伪类到现有的选择器时是最常用的

所以:

#skroller-body {
        &.nonav {
            .skrollable {
                // stuff
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)