css - 替换变量并使用 sass 确定结果范围

标签 css sass mixins scoping

<分区>

我正在尝试使用 sass 寻找一个智能解决方案来替换品牌颜色变量并确定我拥有的每个组件的结果范围。

例如这是我的.scss

$value-to-replace: #000000;
$brand-color-1:    #007be4;
$brand-color-2:    #e1a22e;

.btn {
  margin: 0;
  padding: 10px;
  background-color: $value-to-replace;
}

这是编译后的 .css 我正在尝试生成

.btn {
  margin: 0;
  padding: 10px;
}
.brand-color-1 > .btn{
  background-color: #007be4;
}
.brand-color-2 > .btn{
  background-color: #e1a22e;
}

为了写这个.html

<main class="brand-color-1">
  <a class="btn" href="#">Button Text</a>
</main>

<main class="brand-color-2">
  <a class="btn" href="#">Button Text</a>
</main>

我想要实现的是允许我在所有组件中使用变量 $value-to-replace。无需为每个组件编写 mixin

有什么想法吗?感谢您的帮助!

最佳答案

您可以使用 Sass 列表(和 nth function)和 @while 循环:

$colors: (#007be4, #e1a22e);

.btn {
  margin: 0;
  padding: 10px;
}

$index: 1;

@while $index <  3
{
  .brand-color-#{$index} > .btn { 
     background-color: nth($colors, $index);
  }
  $index: $index + 1;
}

对于列表中的每种颜色,您将为该值创建一个新类。 Sass 列表不是从零开始的。

不过,这并不能解决使用单个变量的问题。它只是解决了多个 mixin 的问题。

编辑: JSBin of code

关于css - 替换变量并使用 sass 确定结果范围,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31276247/

上一篇:html - Bootstrap - 无法将导航栏向右拉的折叠元素居中

下一篇:java - 是否可以在 JavaFX 中更改所选 ListView 单元格的高度

相关文章:

jQUery UI 对话框 - 模态创建滚动条,尺寸错误?

c++ - 使用派生类型的C++ Mixin

javascript - 光标后的工具提示

javascript - SVG 用类声明替换填充声明,用于高级颜色自定义

css - 滚动时固定表头

loops - SASS或LESS关键帧百分比循环

css - 我无法将内容正确居中,怎么办?

css - 如何在不同视口(viewport)上正确定义 Singularity 中的容器

javascript - 如何在 Meteor 中使用 PureRenderMixin (React js)

html - CSS 网格的复杂混合