【问题标题】:SASS/SCSS change variable value before extendSASS/SCSS 在扩展前更改变量值
【发布时间】:2018-12-18 10:53:09
【问题描述】:

我有 Bootstrap 3.3.7 和自定义 scss 文件。

我只想在 @extend 评估之前覆盖 $grid-float-breakpoint 一次。现在我有 3 个扩展基本引导类的类(它们使用默认值,所以我不想弄乱它们)。

在文档中使用 mixins 并包含它是可能的。是否可以使用 .class 和 @extend?

我正在寻找类似的东西

    $foo : 1px;

    .normal-class {
      font-size: $foo;
    }

    .extended-normal-class {
      @extend .normal-class;
      font-color: yellow;
    }

    -- This is what I'm trying to do: ---------------------
    .override-class {
      $foo: 3px;
      @extend .normal-class; 
     // font-size in this class after compile should have 3px;
    }

【问题讨论】:

    标签: sass


    【解决方案1】:

    要实现你的需要,你必须使用@mixin 而不是@extend,下面是一个例子:

    @mixin size($size: 1px){
       font-size: $size;
    }
    
    .extended-normal-class{
       @include size();
    }
    
    .override-class{
       @include size(3px);
    }
    

    【讨论】:

    • 当使用 boostrap 类时,你有很多内部依赖。只是为了讨论,让我们假设我们在“.normal-class”中有 15 次 $foo 使用情况。当然,我们可以手动覆盖所有这些,但也许有一些很好的方法来覆盖基本 $foo 变量,并且只覆盖这个@extend(在'override-class'中)。
    • @MikeQuoro 所以你想在每个新扩展中增加字体大小?
    • 只有一次扩展我想更改解析的 $foo 变量值。
    • 根据最后一条评论更改了答案。 @MikeQuoro
    • 我无法将外部类更改为 mixin。在问题中,我提到我知道我可以使用 mixin 和 include 来实现这一点,但我没有来自 bootstrap 的 mixin。 Bootstrap 只提供类。
    猜你喜欢
    • 1970-01-01
    • 2018-07-04
    • 1970-01-01
    • 2019-06-22
    • 2015-04-07
    • 1970-01-01
    • 2020-09-18
    • 2018-01-07
    • 1970-01-01
    相关资源
    最近更新 更多