我开始使用Less和我想要的原因之一是因为ligthen()函数。所以我的第一次尝试就是做点什么。
这是我的HTML
<div class="box blue">
<div class="boxbar">Foo</div>
blue
</div>
我终于让它运转了,但我怀疑它应该是这样的:
@blue: #468ACE;
@green: #41A53D;
@red: #9C2525;
@purple: #8938BF;
div
{
padding: 10px;
}
.blue {
background-color: @blue;
.boxbar { background-color: lighten(@blue, 10%); }
}
.green {
background-color: @green;
.boxbar { background-color: lighten(@green, 10%); }
}
.red {
background-color: @red;
.boxbar { background-color: lighten(@red, 10%); }
}
.purple {
background-color: @purple;
.boxbar { background-color: lighten(@purple, 10%); }
}
.boxbar
{
height: 10px;
}
我该怎么重构呢?当然,更容易说“获得你的父色,并稍微减轻它”。我尝试了几件事:继承(值得一试!),在.boxcar中有减轻版本。但这显然编译为.boxcar .blue ..这不是我想要的,我结束了你在这里可以看到的东西..它的作用..但它感觉不对。然后我需要为我介绍的每种新颜色编写代码..
答案 0 :(得分:14)
我不完全确定你想要的解决方案是什么......但也许像制作mixin会让你不得不写出这么多东西。
<强> LESS:强>
.bgmixin(@color) {
(~".@{color}") {
background-color: @@color;
.boxbar {
background-color: lighten(@@color, 10%);
}
}
}
@blue: #468ACE;
@green: #41A53D;
@red: #9C2525;
.bgmixin("blue");
.bgmixin("green");
.bgmixin("red");
<强> CSS:强>
.blue{
background-color: #468ace;
}
.blue .boxbar {
background-color: #6ea3d9;
}
.green{
background-color: #41a53d;
}
.green .boxbar {
background-color: #59c055;
}
.red{
background-color: #9c2525;
}
.red .boxbar{
background-color: #c52f2f;
}
在 LESS&gt; = 1.4 中,您可能希望使用类似的内容从颜色名称中插入类名称:
.bgmixin(@color) {
@classname: ~"@{color}";
.@{classname} {
background-color: @@color;
.boxbar {
background-color: lighten(@@color, 10%);
}
}
}