我有一个与颜色配对的类列表,我想设置不同的属性(color,background,border-color,.)在混合器中定义的颜色。
示例
colorHome = #FFF
colorParam = #999
colorDash = #000
links = {
'home': colorHome,
'param': colorParam,
'dash': colorDash
}
.dashboard-menu li
border 1px solid
+addLinks()
color clr
background clr
border-color clr将输出到
.dashboard-menu li {
border: 1px solid;
}
.dashboard-menu li.home {
color: #fff;
background: #fff;
border-color: #fff;
}
.dashboard-menu li.param {
color: #999;
background: #999;
border-color: #999;
}
.dashboard-menu li.dash {
color: #000;
background: #000;
border-color: #000;
}我现在的混合器,使用块.
addLinks()
for key, value in links
clr = value
&.{key}
{block}
.dashboard-menu li
border 1px solid
+addLinks()
color clr
background clr
border-color clr但出于某种原因,clr被设置为background的第一个颜色(colorHome / #FFF),而border-color则设置为color的最后一个颜色(colorDash / #000)。
输出
.dashboard-menu li {
border: 1px solid;
}
.dashboard-menu li.home {
color: #000;
background: #fff;
border-color: #fff;
}
.dashboard-menu li.param {
color: #000;
background: #fff;
border-color: #fff;
}
.dashboard-menu li.dash {
color: #000;
background: #fff;
border-color: #fff;
}考虑到块混合是相对新闻,他们能被用来实现我想要的吗?还是我应该考虑使用完全不同的解决方案?
谢谢
发布于 2014-02-09 12:35:10
您应该考虑使用不同的解决方案。要传递给块混合器的内容是在混合程序代码之前计算的,所以从运行到运行都是一样的。
我不知道你到底想达到什么目的,但这里有一个例子,说明你可以怎样做你已经尝试过的事情:
addLinks(hash)
for key, value in links
new_hash = clone(hash)
for hash_key, hash_value in new_hash
if hash_value == clr
new_hash[hash_key] = value
&.{key}
{new_hash}
{block}
.dashboard-menu li
border 1px solid
addLinks({
color: clr
background: clr
border-color: clr
})您可以在任何属性中使用非块混合器来应用来自links对象的颜色,如果需要其他内容,则可以使用块混合符号:
.dashboard-menu li
border 1px solid
+addLinks({
color: clr
background: clr
border-color: clr
})
padding: 10px我们正在考虑添加一种像散列一样修改传递的块的方法,但我们还没有到这里:)
https://stackoverflow.com/questions/21516907
复制相似问题