【问题标题】:How do I load both ag-grid themes using SCSS and toggle between them?如何使用 SCSS 加载两个 ag-grid 主题并在它们之间切换?
【发布时间】:2020-01-12 11:50:51
【问题描述】:

我尝试在 main.scss 中使用

@import '~ag-grid-community/src/styles/ag-grid';
@import '~ag-grid-community/src/styles/ag-theme-balham/sass/ag-theme-balham';
@import '~ag-grid-community/src/styles/ag-theme-balham-dark/sass/ag-theme-balham-dark';

然后有条件地,我想将ag-theme-balhamag-theme-balham-dark 应用于包含ag-grid 的div。

但是,如果两个主题都是通过 scss 加载的,因为它们都建立在一些带有变量的通用主题文件上,似乎一个会覆盖另一个?即使我可以通过 chrome 检查器验证周围的 div 是否有 class="ag-theme-balham-dark",我的网格最终也会变亮(即使最后导入了深色)。

首先成功删除浅色主题的导入,从而生成深色网格。

如果我切换到使用 ag-grid 的 CSS 而不是 SCSS 确实有效,但 SCSS 的全部意义在于我可以覆盖一些主题变量?

【问题讨论】:

    标签: css sass ag-grid


    【解决方案1】:

    为了解决这个问题,我最终没有导入他们预先构建的主题,而是创建了自定义主题。创建自定义主题仍然很简单,因为您可以使用默认变量作为基础。

    @import '~ag-grid-community/src/styles/ag-grid';
    @import '~ag-grid-community/src/styles/ag-theme-balham/vars/ag-theme-balham-vars';
    @import '~ag-grid-community/src/styles/ag-theme-balham/sass/ag-theme-balham-common';
    
    .ag-theme-balham {
      // $ag-params contains all values for the light theme
      @include ag-theme-balham($ag-params);
    }
    
    .ag-theme-balham-dark {
      $background: #2d3436;
      $foreground: #F5F5F5;
    
      // override the default params with the dark values
      $dark-params: map-merge($ag-params, (
          background-color: $background,
          foreground-color: $foreground,
          secondary-foreground-color: $foreground,
          odd-row-background-color: darken($background, 3),
          header-background-color: darken(#636e72, 30),
          header-foreground-color: $foreground,
          header-cell-hover-background-color: lighten($background, 5),
          header-cell-moving-background-color: lighten($background, 5),
          border-color: #424242,
          hover-color: lighten($background, 7)
        ));
    
        @include ag-theme-balham($dark-params);
    }
    

    https://stackblitz.com/edit/ag-grid-scss-themes?embed=1&file=src/styles.scss

    根据您在 ag-grid 中使用的功能,您可能需要覆盖更多的 $ag-params 值。我只覆盖了示例所需的那些。

    【讨论】:

    • $ag-params 来自 vars 文件?
    • @Winnemucca 是的,$ag-params 来自 'ag-theme-balham-vars 文件。如果您使用的是旧版本的 ag-grid,它被称为 $params 而不是 $ag-params
    • 在当前版本(24.0.0)中,$ag-params 变成了 $ag-theme-alpine-dark-default-params,我们必须从 @import "../node_modules 导入它/ag-grid-community/src/styles/ag-theme-alpine-dark/sass/ag-theme-alpine-dark-default-params";
    猜你喜欢
    • 2018-03-10
    • 2013-12-27
    • 1970-01-01
    • 1970-01-01
    • 2012-09-05
    • 2015-02-11
    • 2022-01-16
    • 2021-10-31
    • 1970-01-01
    相关资源
    最近更新 更多