关于LESS中嵌套直接后代的问题

时间:2015-07-14 19:35:07

标签: css css-selectors less

所以我最近正在研究一些代码,并试图了解更多关于LESS的信息,而且有一件事我无法完全解决这个问题。我看到了使用类似于:

的结构
.class{
    >*{
        /*some css*/
    }
}

注意:>*{}嵌套在.class

我想知道这是做什么的,但有一些我不明白的事情。

我认为它正在做什么:我假设它正在接受该类的所有直接后代并相应地设置它们的样式。所以实际的(编译的)css可能类似于.class > *{}

我的问题:

  1. 我的假设是正确的,还是做了完全不同的事情?

  2. 如果这是正确的,为什么这个陈述不需要&像其他连接一样在它面前?

  3. 我很抱歉,如果以前出现这种情况,我根本不知道还有什么其他方式可以向Google提出同样的问题。

2 个答案:

答案 0 :(得分:5)

  1. 您的假设是正确的。

  2. &可以从以>+这样的组合子开头的嵌套选择器中省略,或者从复合选择器开始,其中预期结果是后代组合子,例如

    .a { .b {} }
    

    产生.a .b

答案 1 :(得分:3)

它实际上很简单:

嵌套的选择器元素始终与空格结合。例如。 [1A]:

a {
   b {}
}

结果:

a b {}

同样, [1b]:

a {
   > b {}
}

结果:

a > b {}

<强> ---

&必须使用 ,如果您需要抑制该空格,例如 [2a]:

a {
    &:hover {}
}

有:

a:hover {}

如果不将父选择元素放在前面, [2b]:

a { 
   b & {}
}

c { 
   & & {}
}

d {
  & {}
}

e { 
   f ~ g:not(&) > & & + &&& {}
}

// etc.

导致:

b a {}
c c {}
d {}
f ~ g:not(e) > e e + eee {}

<强> ---

组合符从不影响任何事情,唯一的要求是组合符后面必须跟一个标识符,例如:

a { > b {} } // ok
a > { b {} } // error