loops - SASS 循环选择器

标签 loops include sass selector

我有这个重复的选择器,如下所示:

// Level 1
.wrap > ul > li {
  background: green;
}

// Level 2 
.wrap > ul > li > ul > li {
  background: orange;
}

// Level 3 
.wrap > ul > li > ul > li > ul > li {
  background: red;
}

// Level 4 
.wrap > ul > li > ul > li > ul > li > ul > li {
  background: light-red;
}

// Level 5 
.wrap > ul > li > ul > li > ul > li > ul > li > ul > li{
  background: salmon;
}

有没有办法可以创建一个 sass 函数,所以我可以像这样指定深度和颜色
 **for example** 
 @include depth(5) { background: salmon })

我会很感激你的帮助:)

最佳答案

您可以使用 for 循环生成选择器链,然后将其注入(inject)到带有 interpolation 的规则中:

@mixin depth($depth: 1) {
  $chain: '';
  @for $i from 0 to $depth {
    $chain: $chain + ' > ul > li';
  }

  & #{$chain} {
    @content;
  }
}

example | gist

关于loops - SASS 循环选择器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20413656/

相关文章:

twitter-bootstrap - 将 Bootstrap SASS 添加到 Jekyll/GitHub 页面

具有键值的 C# foreach 循环

compiler-errors - 前向声明在MQL中无法按预期工作

php - PHP-从另一个PHP文件获取变量而不执行代码?

css - rails : Precompiled assets missing node modules

javascript - For Loop 没有正确应用第 n 个 child

java - 为什么 for 循环的条件部分中的 "False"显示错误,但 "True"工作正常?

arrays - 在 wordEquiv[i] 中对成员 'subscript' 的引用不明确

Javascript 循环 - 无法弄清楚这一点

ruby Hash 包括另一个哈希,深度检查