【问题标题】:Calling variables dynamically in SCSS [duplicate]在 SCSS 中动态调用变量 [重复]
【发布时间】:2012-05-27 10:22:55
【问题描述】:

我的网站有一系列编号的颜色变量:

$red-1: #821B0D;
$red-2: #B13631;
$red-3: #D75B5B;
$red-4: #F18788;
$red-5: #FDB9B0;

我想设置一个动态调用它们的 mixin,如下所示:

@mixin link($color-name) {
    color: $#{$color-name}-2;
    &:hover {
        color: white;
        background-color: $#{$color-name}-4;
    }
}

但是,我不知道如何以这样的方式调用变量。 (上面的语法不起作用。)

(为了避免明显的建议:我没有使用 SASS 的颜色函数,因为我的颜色不是由线性饱和度或亮度变化设置的。我无法在 SASS 中以编程方式生成它们。红色之间的亮度变化步数与蓝调之间的步数不同,与绿色等的步数不同。)

【问题讨论】:

    标签: sass


    【解决方案1】:

    首先,您建议的语法不起作用的原因是,当属性值中包含插值时,它周围的文本(例如“$”符号)被解释为纯 CSS。这在 interpolations 上的 SASS 参考中有所说明。

    我建议改用 SASS lists。像这样的东西会给你你所追求的功能:

    @mixin link($color) {
        color: nth($color, 2);
        &:hover {
            color: white;
            background-color: nth($color, 4);
        }
    }
    
    $red: (#821B0D, #B13631, #D75B5B, #F18788, #FDB9B0);
    
    .test {
        @include link($red);
    }
    

    (请注意,传递给nth() function 的索引值是从一开始的,而不是从零开始的。)

    【讨论】:

    • 这就是我最终所做的。工作一种享受。
    • 了解 SASS 列表及其功能最近改变了我的生活。
    猜你喜欢
    • 2020-08-22
    • 2016-01-26
    • 2014-11-03
    • 2018-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-05-08
    • 2015-10-26
    • 2012-06-06
    相关资源
    最近更新 更多