类之间的 SASS 变量值

  • 本文关键字:变量值 SASS 之间 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% );
    }
}

我遇到的范围界定问题的解决方案可以通过使用 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 */
    }
}

最新更新