html - 使用 scss 类名来获取已经定义的变量?
问题描述
假设您有重复的代码:
$primary: white;
$secondary: black;
$success: green;
$danger: red;
$warning: yellow;
&.primary-stripe {
border-top-color: $primary;
}
&.secondary-stripe {
border-top-color: $secondary;
}
&.success-stripe {
border-top-color: $success;
}
&.danger-stripe {
border-top-color: $danger;
}
&.warning-stripe {
border-top-color: $warning;
}
有没有办法通过基于已经存在的类名访问变量来简化它?例如
&.[var]-stripe {
border-top-color: $[var];
}
唯一棘手的部分是当 $[var] 不存在时会发生什么。我猜那么scss可能会出错?
解决方案
您可以为此使用SASS 地图:
$color_map: (
'primary': 'white',
'secondary': 'black',
'success': 'green',
'danger': 'red',
'warning': 'yellow'
);
.main_selector {
@each $name, $color in $color_map {
&.#{$name}-stripe {
border-top-color: #{$color};
}
}
}
这编译为:
.main_selector.primary-stripe {
border-top-color: white;
}
.main_selector.secondary-stripe {
border-top-color: black;
}
.main_selector.success-stripe {
border-top-color: green;
}
.main_selector.danger-stripe {
border-top-color: red;
}
.main_selector.warning-stripe {
border-top-color: yellow;
}
推荐阅读
- symfony - 如何在 Sonata Media Bundle 中显示每个模块的所有上下文列表?
- javascript - 即使我正确填写了prompt(),我的if语句怎么能不起作用
- javascript - 基本反应本机应用程序中的高内存消耗
- python - 如何使用循环来计算nan的数量
- clojurescript - 任何人都可以给我一个建议,让我在 CLJS 或其他使用 Clojure 的仪表板文本编辑器中使用 QuillJS?
- sql - 将同一表中的行分组为同一表中的一行
- ruby-on-rails - 设计测试助手无法登录
- java - Maven Archetype 动态包名
- d3.js - D3 path.transition 不是函数
- abap - 在 MIRO tcode 中以编程方式更改付款块?