如何重新计算兄弟元素的样式?

How to re-calculate a style on sibling elements?

不确定我问的是否正确。所以请允许我进一步解释。

HTML

<div class='col'>
  <div id='q1' class='qBlock'
</div>
<div class='col'>
  <div id='q2' class='qBlock'
</div>
<div class='col'>
  <div id='q3' class='qBlock'
</div>

@qBlockBG: #ccc;
.qBlock { color: white; }
#q1: { background-color: @qBlockBG; }
#q{n}: { background-color: darken(#q{n-1}, 10%); }    <--- doesn't work, but that's the idea

我想要做的是为每个兄弟姐妹重新计算 #q1 的基本样式,以便每个额外的兄弟姐妹的颜色更深。所以 #q2#q1 暗 10%,#q3#q2 暗 10%,依此类推。

您可以使用带有保护表达式的递归混合在 LESS 中模拟循环。这是适用于您的案例的示例:

#q1 {
  background-color: #ccc;
}

/* recursive mixin with guard expression - condition */
.darker-qs(@color, @index) when (@index < 10) { 

  @darker-color: darken(@color, 10%);

  /* the statement */
  #q@{index} {
    background-color: @darker-color;
  }
  /* end of the statement */

  /* the next iteration's call - final expression */
  .darker-qs(@darker-color, @index + 1); 
}

/* the primary call - initialization */
.darker-qs(#ccc, 2);