【问题标题】:Sass - lighten color without color referenceSass - 在没有颜色参考的情况下淡化颜色
【发布时间】:2014-08-19 09:57:12
【问题描述】:

我在这里有一个页面来说明我的问题

www.ttmt.org.uk/color

它只是具有基色的颜色块,然后我使用 sass 使中心的颜色变亮和变暗。

我在这里通过给 eavh div(color block) 一个类名然后在 sass 中引用该名称并使基色变亮或变暗来做到这一点。

这有点 sass,所以我在想是否可以在不引用 sass 语句中的颜色的情况下给颜色变亮或变暗

所以不要有

    <div class="at-blue-lightest"></div>

    //

    at-blue{
        background-color: $base-blue;
    }

    .at-blue-lightest{
        background: lighten($base-blue, 30%);
    }

我可以:

    <div class="at-blue lightest"></div>

    //

    .at-blue{
        background-color: $base-blue;
    }

    .lightest{
        background: lighten( 30%);
    }

因此,它不会引用颜色,而是将颜色变亮/变暗。

这都是废话

    $base-blue: #267EC8;
    $base-green: #00A504;
    $base-red: #EA002A;
    $base-gray: #aaaaaa;

    .box{
        height: 150px;
        margin: 0 10px 10px 0;
        width: 150px;
        float: left;
    }

    .con{
        overflow: auto;
    }

    .at-blue{
        background-color: $base-blue;
    }
    .at-red{
        background-color: $base-red; 
    }
    .at-green{
        background-color: $base-green; 
    }

    .at-blue-lightest{
        background: lighten($base-blue, 30%);
    }

    .at-blue-lighter{
        background: lighten($base-blue, 20%);
    }

    .at-blue-light{
        background: lighten($base-blue, 10%);
    }

    .at-blue-dark{
        background: darken($base-blue, 10%);    
    }

    .at-blue-darker{
        background: darken($base-blue, 20%);    
    }

    .at-blue-darkest{
        background: darken($base-blue, 30%);    
    }


    .at-red-lightest{
        background: lighten($base-red, 30%);
    }

    .at-red-lighter{
        background: lighten($base-red, 20%);
    }

    .at-red-light{
        background: lighten($base-red, 10%);
    }

    .at-red-dark{
        background: darken($base-red, 10%); 
    }

    .at-red-darker{
        background: darken($base-red, 20%); 
    }

    .at-red-darkest{
        background: darken($base-red, 30%); 
    }


    .at-green-lightest{
        background: lighten($base-green, 30%);
    }

    .at-green-lighter{
        background: lighten($base-green, 20%);
    }

    .at-green-light{
        background: lighten($base-green, 10%);
    }

    .at-green-dark{
        background: darken($base-green, 10%);   
    }

    .at-green-darker{
        background: darken($base-green, 20%);   
    }

    .at-green-darkest{
        background: darken($base-, 30%);    
    }

【问题讨论】:

  • 我不明白你认为这将如何工作。 Sass 怎么知道你想要淡化什么颜色?
  • cimmanon - 这就是我问的原因,我不知道这是否可能

标签: sass


【解决方案1】:

background-color: darken($black-blue, 10%);

【讨论】:

    【解决方案2】:

    Sass 总是编译成 CSS,所以如果 CSS 做不到,Sass 也做不到。 CSS 不可能知道给定元素下面的内容。因为这也取决于传递到页面的 HTML。

    但是,您可以只使用 CSS 更高级的颜色值规范,其中包括 semi 透明功能以及 RGBAHSLA。例如:

    background: rgba(255, 255, 255, .25);
    

    是 25% 透明的白色。因此,它会将其背后的任何东西减轻 25%。

    【讨论】:

    • 这几乎就像为这个被标记为重复的问题给出的答案。几乎就像这个应该作为副本关闭。
    • @cimmanon 您在stackoverflow.com/questions/14920801/… 上的回答没有说​​明使用alpha 值背景颜色,这是我提供的替代解决方案的核心。问题相似,但不同之处在于,一个专门询问background-color,而另一个询问color。如果您想对此有更多的了解,请随意将其带到 meta 中。
    • 对于 Sass,“颜色”和“背景颜色”之间存在天壤之别。
    • 没有。但是有 CSS,它提供了一种解决方法。
    猜你喜欢
    • 2013-07-14
    • 2018-08-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多