减少 CSS : & reverse parent with multiple classes?

标签 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;

        }
    }
}
.nonav &的输出是.nonav #skroller-body .skrollable
我想知道我是否可以得到 #skroller-body.nonav .skrollable而是以某种方式没有额外的 HTML 标记(包装器 div.nonav)?

目前我只会复制 parent
#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 代码。

最佳答案

The docs tell us:

The & operator represents the parent selectors of a nested rule and is most commonly used when applying a modifying class or pseudo-class to an existing selector



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

关于减少 CSS : & reverse parent with multiple classes?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13146694/

相关文章:

java - Playframework 2.5.4 sbt less 编译失败

css - 可以在编译期间控制台记录一个 LESS 变量吗?

html - LESS 中的字体单位和符号与 BEM 语法问题

css - 使用 Less/CSS 同时为所有选择器设置样式链接(<a> 标签)?

ubuntu - 在 Ubuntu 中编译 LESS Twitter Bootstrap 文件

html - div 位置在另一个垂直元素的中间

css - LESS css 的 compass 样式库?

sass - SASS 中 LESS 的 "import (reference) ' 样式'"相当于什么

CSS Less-无法在 bootstrap.css 中找到类

html - 自定义 Bootstrap : disabled primary button border