【问题标题】:Lighten color from parent in Less在 Less 中减轻父级的颜色
【发布时间】:2016-03-03 05:45:43
【问题描述】:

我从 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.. 这不是我想要的,我以你在这里看到的内容结束.. 它有效.. 但感觉不对。然后我需要为我介绍的每种新颜色编写代码..

【问题讨论】:

    标签: less


    【解决方案1】:

    我不完全确定你想要的解决方案是什么......但也许像制作一个 mixin 这样的东西会帮助你不必写这么多东西。

    少:

    .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>=1.4 中,您可能希望使用类似这样的方法从颜色名称中插入类名称:

    .bgmixin(@color) {
        @classname: ~"@{color}"; 
        .@{classname} {
            background-color: @@color;
            .boxbar {
                background-color: lighten(@@color, 10%);
            }
        }
    }
    

    【讨论】:

    • +1 在 mixin 中很好地使用了 @@ 参考功能。很有创意。
    • 是的,这就是我想要的。 @@ 是什么意思?
    • @ScottS 谢谢 =) 你可能已经知道我对解决方案相当兴奋。 @GerbenJacobs @@ 用于访问使用变量名定义的变量。在lesscss.org 上搜索它我只是想补充一点,对于 LESS 1.4,您可能希望对类名执行类似的操作:@classname:~"@{color}"; .@{classname} {...
    猜你喜欢
    • 2012-12-12
    • 1970-01-01
    • 2015-11-09
    • 1970-01-01
    • 2016-08-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多