css - 如何在scss中编写带参数的类?

标签 css class parameters colors sass

是否可以编写一个带有预定义颜色十六进制代码的类? 这样在我的 HTML 中我可以创建如下元素:

$yellow: #FFFF00;

.color($colorName) { 
    color: $colorName; 
}

<div class="color(yellow)">
</div>

这将是我的问题解决方案。我的问题是我的 .scss 文件中有太多不同颜色的类。

谢谢

最佳答案

您可以在 SCSS 中很容易地实现这一点。对于快速解决方案:here's the code in a JSfiddle .

更详尽的解释:

SASS 3.3你可以使用map data structure .它们存储键/值对的组合:

$map: (key1: value1, key2: value2, key3: value3);

因此,在您的情况下,您可以创建一个颜色图(任意长或短)以供以后引用:

$colors: (
    red: #ff0000,
    yellow: #ffd000,
    blue: #00baff,
    green: #00ff00
);

现在,要生成 CSS 类,您需要使用一些 SASS 遍历 map :

@each $colorname, $color in $colors {
    .square--#{$colorname} {
       background-color: $color;
    }
}

@each 循环所做的就是遍历 $colors 中的每个键/值对,将键 (例如:red) 分配给 $colorname 并将值 < em>(例如:#ff0000) 到 $color。

编译后的 CSS 将是:

.square--red    { background-color: #ff0000; }
.square--yellow { background-color: #ffd000; }
.square--blue   { background-color: #00baff; }
.square--green  { background-color: #00ff00; }

如果将来您想添加一种新颜色,只需将键/值对添加到 $colors 映射并进行编译即可!

关于css - 如何在scss中编写带参数的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30018885/

相关文章:

google-chrome - CSS3 颜色过渡在 Chrome 中不起作用

css - 有没有支持全宽的CSS Grid System?

css - 元素之间的 Flexbox 边距和父包装器的零边距

java - 在 Scala 中创建 Java 对象

ms-access - VBA使用基于查询的参数运行Access Report

c# - 检查某些函数参数数据类型是否由于在 C# 上的编译而相等

html - ipad上的固定背景

python - 使用多处理时无法 pickle 静态方法

JavaScript 类和调用上下文

pointers - 指向参数数组目标的 Fortran 指针