【问题标题】:Less CSS : Conditional @imports using mixins - Variable scope更少的 CSS:使用 mixins 的条件 @imports - 变量范围
【发布时间】:2014-10-30 22:40:11
【问题描述】:

我正在尝试通过设置检查特定变量将@import 特定文件放入我的Less 项目中。这是我目前所拥有的:

@import "shared/variables";
@import "shared/global";
@import "shared/hero";
@import "shared/listings";

//
// Color Variations
// Based on @bt-color-variation
// Decides when to load the light/dark theme
//
@bt-color-variation: dark; // Default color variation
.bt-color-variation(dark) {
    @import "color-variations/dark/global";

    @import "color-variations/dark/variables";
}

.bt-color-variation(dark) {
    @import "color-variations/light/global";
    @import "color-variations/light/buttons.less";

    @import "color-variations/light/variables";
}

.bt-color-variation(@bt-color-variation);

这实际上会根据该变量加载适当的颜色变化。问题是在该颜色变化的variable.less 文件中设置的任何变量都不会覆盖在shared/variables.less 文件中在它之外所做的事情。与常规的@imports 相比,运行“何时”混入似乎存在问题或范围问题。我希望 mixins 能够运行并使用 Less 的“last-win”变量案例。

任何关于我如何基于 Less 变量(而不是处理变量范围)有条件地加载文件的想法都会非常有帮助。一如既往的感谢。

【问题讨论】:

    标签: less


    【解决方案1】:

    mixin 中的变量不会覆盖调用者范围内的变量(请参阅Mixins as Functions)。

    对于这个用例,我建议使用更简单的方法:

    @bt-color-variation: dark;
    
    @import "color-variations/@{bt-color-variation}/global";
    @import "color-variations/@{bt-color-variation}/buttons";
    @import "color-variations/@{bt-color-variation}/variables";
    

    Variabes > Import statements

    【讨论】:

    • 在不满足条件的情况下,如果没有要导入的文件,你会怎么做?
    • @bt-color-variation: default; 并提供(可能为空)@import "color-variations/default/global"; 等文件(或使用(optional) 标志而不是空文件)。尽管从长远来看,请确保您不要走与#2772相同的道路。
    • 我想我已经尝试了一切,但似乎都没有工作:stackoverflow.com/questions/35460595/optional-imports-in-less
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-07-10
    • 1970-01-01
    • 2013-03-12
    • 1970-01-01
    • 2013-04-02
    • 2017-08-28
    • 2015-03-28
    相关资源
    最近更新 更多