【问题标题】:Dynamic import style and set scss variable value动态导入样式和设置scss变量值
【发布时间】:2021-05-16 23:37:24
【问题描述】:

我有一个管理模板,我希望用户在其中提供选项来切换不同的主题颜色,例如深色/浅色主题以及设置变量值,但我无法有条件地导入样式文件。

@if $light-theme {
    @import "./_metronic/_assets/sass/themes/layout/aside/light.scss";
    $primary: green;
} @else {
    @import "./_metronic/_assets/sass/themes/layout/aside/dark.scss";
    $primary: blue;
}

出现错误:不能在控制指令或 mixins 中使用导入指令。

【问题讨论】:

    标签: css reactjs if-statement sass styles


    【解决方案1】:

    这也是一个非常渴望的项目......因为错误消息返回:这是不可能的。 (https://github.com/sass/sass/issues/279)

    但是你可以做的是设置一个主题变量并导入你的主题文件。每个主题文件都有一个基于主题变量的条件输出:

    $theme: 'light-theme';
    @import 'path/dark-theme';
    @import 'path/light-theme';
    
    
    // EVEREY THEME FILE WITH STRUCTURE:
    @if( $theme == 'this-theme' ){
    
       /* 
          here goes your theme variables or 
          if whanted your theme code in the file 
       */
    
    }
    

    【讨论】:

    • 嗨@Brebber,感谢您的回复,但我无法编写您提到的代码我想有条件地导入这些样式文件,因为这些文件还有其他导入
    • @FarhanShaikh 不幸的是,这确实不能在 Sass 本身中完成。甚至在新版本的 Dart Sass 中也没有。也许你有机会使用外部技术。我已经阅读过这些技术,但我自己没有任何经验,所以我不能说太多。以下是链接:github.com/sass/node-sass/issues/965#issuecomment-103384773 || npmjs.com/package/node-sass-conditional-importer希望对您有所帮助。
    猜你喜欢
    • 2020-06-22
    • 2018-10-27
    • 2020-10-22
    • 2021-05-11
    • 2014-05-15
    • 2019-05-08
    • 1970-01-01
    • 2014-11-03
    • 1970-01-01
    相关资源
    最近更新 更多