类之间的SASS变量值

时间:2015-01-26 18:13:59

标签: sass

我最近开始使用SASS变量来编写更加动态,易于管理的样式。我想知道是否可以将变量的值从一个类传递到另一个类,以防止编写重复的代码。

在下面的示例中,我希望所有按钮在悬停时亮3%。理想情况下,你能够在" .btn"适用于所有按钮的类。然后你只需要定义" $ btnColor"的值。对于每种类型的按钮。但是,我发现它没有按预期工作。 " $ btnColor"变量函数中未定义变量。

有没有办法实现我的尝试?对于每个按钮类,我是否需要悬停的lighten功能?这看起来不是浪费吗?这是JSFiddle,您可以在其中玩耍!提前感谢您的意见。

标记:

<button class="btn btn-default">Button</button>
<button class="btn btn-primary">Button</button>
<button class="btn btn-secondary">Button</button>

风格:

.btn {
    font-size: 12px;
    font-weight: bold;
    text-transform: uppercase;

    &.btn-default {
        /* Set Button Color */
        $btnColor: #192951;

        background: $btnColor;
        border: 1px solid $btnColor;
        color: #fff;
    }

    &.btn-primary {
        /* Set Button Color */
        $btnColor: #006da8;

        background: $btnColor;
        border: 1px solid $btnColor;
    }

    &.btn-secondary {
        /* Set Button Color */
        $btnColor: #5db0d8;

        background: $btnColor;
        border: 1px solid $btnColor;
        color: #fff;
    }

    &:hover {
        background: lighten( $btnColor, 3% );
    }
}

1 个答案:

答案 0 :(得分:1)

我遇到的范围问题的解决方案可以通过使用mixin来解决。以下是一个例子。

标记:

<button class="btn btn-default">Default</button>
<button class="btn btn-primary">Primary</button>
<button class="btn btn-secondary">Secondary</button>

风格:

@mixin button($color) {
    background: $color;
    border: 1px solid $color;
    font-weight: bold;
    text-transform: uppercase;

    &:hover {
        background: lighten($color, 5%);
        border: 1px solid $color; 
    }
}

.btn-default {
    @include button(#192951);
    color: #fff;

    &:hover {
        color: #fff; /* Bootstrap override */
    }
}

.btn-primary {
    @include button(#006da8);
}

.btn-secondary {
    @include button(#5db0d8);
    color: #fff;

    &:hover {
        color: #fff; /* Bootstrap override */
    }
}