【问题标题】:Immediate Child selector in LESSLESS 中的直接子选择器
【发布时间】:2011-12-27 23:01:06
【问题描述】:

是否有 LESS 在其输出中应用直接子选择器 ( > )?

在我的 style.less 中,我想写这样的东西:

.panel {
    ...
    > .control {
        ...
    }
}

并让 LESS 生成如下内容:

.panel > .control { ... }

【问题讨论】:

  • 有趣的是,您问题中的 sn-p 已经是正确答案了。
  • @thirtydot 当然可以,只是它不起作用……如果您不删除空格或添加“&”,则不会。我正在使用 less.js。不能确定其他解析器。
  • 我刚刚对其进行了测试,您问题中的原始代码确实在less.js中工作。自己看:jsfiddle.net/thirtydot/vcE8t
  • 是的,我很抱歉,它就像空间的魅力一样。为你+1。我不知道昨天几个小时它对我不起作用......否则我不会发布这个问题。

标签: css css-selectors less


【解决方案1】:

如果您需要定位更多选择器:

.parent {
    >.first-child,
    >.second-child,
    >.third-child {
    ...
    }
}

【讨论】:

    【解决方案2】:

    使用 '&' 时遵循的正确语法在这里是多余的。

    .panel{
       > .control{
       }
    }
    

    根据less guidelines,'&'用于参数化祖先(但这里没有这个必要)。在this less example 中,&:hover:hover 更重要,否则会导致语法错误。但是,在这里使用 '&' 没有这样的语法要求。否则所有嵌套都需要'&',因为它们本质上是指父级。

    【讨论】:

    • @JJF 没有问题,因为它是一个答案?
    【解决方案3】:

    官方方式:

    .panel {
      & > .control {
        ...
      }
    }
    

    & 始终引用当前选择器。

    http://lesscss.org/features/#features-overview-feature-nested-rules

    【讨论】:

    • 我认为这也只是在愚弄解析器(就像您对其他答案的感觉一样)。让我解释。就像你说的, & 总是指当前(父)选择器。所以无论后面的内容应该应用到父级。而且,这就是伪类的作用。直接子类更接近 ****gasp**** 子类而不是伪类。所以只使用 > 更加直观和合乎逻辑。
    • 你认为哪个更正确? div > p 还是 div >p& 组合器是 LESS 中的规范方式,而不是我的感受。你的解释是反讽。有些人将他们的 CSS 写在一行中......
    • 大多数人使用 LESS,因此他们不必关心生成的实际 CSS。无论如何,事实证明>之后可以使用空格。所以 & 纯粹是多余的。
    【解决方案4】:

    此外,如果您要定位第一个子元素,例如 <tr> 的第一个 <td>,您可以使用如下内容:

    tr {
        & > td:first-child {font-weight:bold;}
    }
    

    这有助于在不需要时减少类声明。

    【讨论】:

      【解决方案5】:

      更新

      实际上,原始问题中的代码可以正常工作。你可以坚持使用> 子选择器。


      找到答案了。

      .panel {
          ...
          >.control {
              ...
          }
      }
      

      注意“>”和“.”之间没有空格,否则不起作用。

      【讨论】:

      • 我不会怀疑如果它不能与那里的空间一起工作,那是一个错误,除非它有专门的记录。
      • 这只是在欺骗解析器。它将其视为单个选择器,因此您会得到 .panel >.control
      • 我把它当作一个特性而不是一个错误。当你以这种方式使用它而不是“&”时,它会更加一致。我认为如果你只对伪类而不是子类使用“&”,代码会更清晰。
      • 这是 CSS 的一个特性,它接受div > pdiv>p。一致性总是在选择器之间使用空格(看看生成的 CSS)。
      • 当然,但我更关心使用 & 的一致性。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-11
      • 2012-02-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多