【发布时间】:2015-10-27 06:34:15
【问题描述】:
假设我有以下 HTML:
<div class="tocolor-red"> tocolor </div>
<div class="tocolor-blue"> tocolor </div>
<div class="tocolor-green"> tocolor </div>
<div class="tocolor-yellow"> tocolor </div>
不必为每种颜色重复下面的 sn-p 之类的 CSS 代码...
.tocolor-red{
background: red;
}
.tocolor-red::before {
content: "red";
}
...有没有办法编写一个从 css 类中捕获颜色的 CSS 规则?为了尽职调查,我已经查找了属性选择器,并且我注意到已经有多种方法可以在 css 中使用通配符。但是,我还没有找到任何可以让我捕获通配符文本并将其作为规则一部分的内容。
如果正则表达式适用于 CSS,则规则如下所示:
.tocolor-([\w+]) {
background: $1;
}
.tocolor-([\w+]:before {
content: $1;
}
【问题讨论】:
-
您实际上不能将 html 属性的属性值用作 css 规则的值,但使用 sass 或更少可以生成循环中所需的每个规则
-
这是个好主意,用 JS 很容易做到。
-
Css 并不能真正做到这一点。正如您已经建议的那样,您可能需要编译为 css(less、sass、scss)的语言,但是您必须为每种颜色添加规则。
-
@cimmanon 一个 sass 示例 :) blackfalcon.roughdraft.io/… 所以它会生成您需要的规则,但当然它不会从 html 中提取任何内容。只需使用有效的方法或正确的工具;)
标签: javascript css