更少的 CSS 嵌套类

声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow 原文地址: http://stackoverflow.com/questions/5117133/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me): StackOverFlow

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-29 23:48:36  来源:igfitidea点击:

LESS CSS nesting classes

cssnestedless

提问by newbie_86

I'm using LESS to improve my CSS and am trying to nest a class within a class. There's a fairly complicated hierarchy but for some reason my nesting doesn't work. I have this:

我正在使用 LESS 来改进我的 CSS 并试图在一个类中嵌套一个类。有一个相当复杂的层次结构,但由于某种原因,我的嵌套不起作用。我有这个:

.g {
    float: left;
    color: #323a13;
    .border(1px,#afc945);
    .gradient(#afc945, #c8da64);
    .common;
    span {
        .my-span;
        .border-dashed(1px,rgba(255,255,255,0.3));
    }
    .posted {
         .my-posted;
         span {
            border: none;
         }
    }
}

I can't get the .g.postedto work. it just shows the .gbit. If i do this it's fine:

我无法开始.g.posted工作。它只是显示了.g一点。如果我这样做很好:

.g {
    float: left;
    color: #323a13;
    .border(1px,#afc945);
    .gradient(#afc945, #c8da64);
    .common;
    span {
        .my-span;
        .border-dashed(1px,rgba(255,255,255,0.3));
    }
}

.g.posted {
         .my-posted;
         span {
            border: none;
         }
    }

I'd like to nest the .postedin .gthough. Any ideas?

不过我想把它嵌套.posted进去.g。有任何想法吗?

回答by mingos

The &character has the function of a thiskeyword, actually (a thing I did not know at the moment of writing the answer). It is possible to write:

&角色具有的功能this关键字,居然(事我不知道在写答案的时刻)。可以写成:

.class1 {
    &.class2 {}
}

and the CSS that will be generated will look like this:

将生成的 CSS 将如下所示:

.class1.class2 {}

For the record, @grobitto was the first to post this piece of information.

为了记录,@grobitto 是第一个发布这条信息的人。



[ORIGINAL ANSWER]

[原答案]

LESS doesn't work this way.

LESS 不是这样工作的。

.class1.class2 {}- defines two classes on the same DOM node, but

.class1.class2 {}- 在同一个 DOM 节点上定义了两个类,但是

.class1 {
    .class2 {}
}

defines nested nodes. .class2will only be applied if it is a child of a node with the class class1.

定义嵌套节点。.class2仅当它是具有类的节点的子节点时才会应用class1

I've been confused with this too and my conclusion is that LESS needs a thiskeyword :).

我也对此感到困惑,我的结论是 LESS 需要一个this关键字:)。

回答by grobitto

.g {
    &.posted {
    }
}

you should add "&" before .posted

您应该在 .posted 之前添加“&”

回答by Nesha Zoric

If the ampersand is located right next to the child element in nesting, it is compiled into a double class selector. If there is space between & and selector it will be compiled into child selector. Read more about nesting in Less here.

如果&符号位于嵌套中的子元素旁边,则将其编译为双类选择器。如果 & 和选择器之间有空格,它将被编译为子选择器。在此处阅读有关 Less 中嵌套的更多信息。