【问题标题】:Less css selector issue更少的 CSS 选择器问题
【发布时间】:2016-09-28 18:32:04
【问题描述】:

我使用较少的 css 并尝试使用 & 来组合多个选择器。我创建了一个虚拟环境来阐述这个问题。

HTML

<div class="ampuse">
    <p>This is first</p>
    <p>This is second</p>
    <div>This is div 1</div>
    <p>This is Third</p>
    <em>This is em</em>
    <div>This is div 2</div>
    <div>This is div 3</div>
</div>

.ampuse{
    p,div{
        color: red;
        &+&{
            background: yellow;
            color: blue;
        }
    }
}

现在根据较少的规则,这将创建这样的 css

.ampuse p,
.ampuse div {
  color: red;
}

.ampuse p + .ampuse p,
.ampuse p + .ampuse div,
.ampuse div + .ampuse p,
.ampuse div + .ampuse div {
  background: yellow;
  color: blue;
}

但我只想渲染一次父元素,然后选择器应该在子元素下工作。这是我想要的css

.ampuse p,
.ampuse div {
  color: red;
}

.ampuse p + p,
.ampuse p + div,
.ampuse div + p,
.ampuse div + div {
  background: yellow;
  color: blue;
}

谁能帮我用更少的钱来实现它?

【问题讨论】:

  • 你试过&amp; + p, &amp; + div吗?

标签: css css-selectors less


【解决方案1】:
.ampuse {
    p,
    div {color: red;
        + p,
        + div {
          background: yellow;
          color: blue;
        }
    }
}

制作

.ampuse p,
.ampuse div {
  color: red;
}
.ampuse p + p,
.ampuse div + p,
.ampuse p + div,
.ampuse div + div {
  background: yellow;
  color: blue;
}

【讨论】:

    【解决方案2】:

    回答接受如我的评论中所述,使用&amp; + p, &amp; + div

    .ampuse{
        p,div{
            color: red;
    
            + p,
            + div {
                background: yellow;
                color: blue;
            }
        }
    }
    

    【讨论】:

    • 实际上我有点困惑这是如何工作的,因为当我们使用&amp;+&amp; 时,这意味着它将进行p,div&amp;+p, &amp;+div 的所有比较?它是如何创建实例的?
    • @GauravAggarwal 它正在合成选择器,但&amp; 表示parent from top level,女巫是.ampuse p/div 这就是为什么&amp;+&amp; 导致.ampuse p + .ampuse p
    • @TheReveller 我的答案在 cmets,将其移至真实答案,您的答案是在我的评论之后,也许这就是 OP 接受它的原因。
    猜你喜欢
    • 1970-01-01
    • 2020-08-16
    • 1970-01-01
    • 2012-08-17
    • 1970-01-01
    • 1970-01-01
    • 2012-06-22
    相关资源
    最近更新 更多