用nth-child创建mixin

时间:2014-06-11 16:05:02

标签: css less css-selectors

我想在LESS,CSS中创建一个函数。 该函数应该在这里执行:

.col{
    .run-the-function();
    }

问题是:例如,我希望该函数影响每个第三个孩子。

.test(@columns, @top-margin, @right-margin){
&:nth-child(@columns * n + 0 ){

}
}

内容: 当函数执行时,每三个,第二个,第四个元素或任何你设置的元素,该元素将获得一个红色边框。

你有什么想法吗?这有可能吗?

由于

2 个答案:

答案 0 :(得分:1)

我认为这会起作用

.test(@columns, @top-margin, @right-margin){
    &:nth-child(@{columns}n){

    }
}

有关第n个孩子的更多信息https://developer.mozilla.org/en-US/docs/Web/CSS/:nth-child

答案 1 :(得分:0)

这有效......

输出是基于各种" nth"的交替行。值。 我很快就会在这里发布一张图片。

标记式:

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Test</title>
    <link rel="stylesheet" href="/Content/test.css" />
</head>
<body>
   <div class="alt-rows every-3rd">
      <div>Test 1</div>
      <div>Test 2</div>
      <div>Test 3</div>
      <div>Test 4</div>
      <div>Test 5</div>
      <div>Test 6</div>
   </div>
   <br/>
   <div class="alt-rows every-2nd">
      <div>Test 1</div>
      <div>Test 2</div>
      <div>Test 3</div>
      <div>Test 4</div>
      <div>Test 5</div>
      <div>Test 6</div>
   </div>
</body>
</html>

减:

@bg: white;
@alt-bg: gray;

.altRows(@nth-row) {
   background-color: @bg;
   div:nth-child(@{nth-row}n+1) {
      background-color: @alt-bg;
   }
}   

.alt-rows {
   &.every-2nd {
      .altRows(2);
   }

   &.every-3rd {
      .altRows(3);
   }
}