首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在scss类中导入scss文件

如何在scss类中导入scss文件
EN

Stack Overflow用户
提问于 2020-01-28 18:23:41
回答 1查看 2.2K关注 0票数 4

当我将"dark- theme“类添加到body时,我想添加一个不同的主题。我的实现如下所示:

代码语言:javascript
复制
@import '../../../../node_modules/angular-grids/styles/material.scss';

.app-dark {
  @import '../../../../node_modules/angular-grids/styles/material-dark.scss';
}

一点运气都没有。有关于如何做到这一点的线索吗?

EN

回答 1

Stack Overflow用户

发布于 2020-01-28 19:35:48

有两种方法可以做到这一点。它们都包含了mixins。

meta.load-css

sass:meta feature提供了做你想做的事情的能力。

假设你有一个主题的scss文件:

代码语言:javascript
复制
//theme/_code.scss
$border-contrast: false !default;

code {
  background-color: #6b717f;
  color: #d2e1dd;
  @if $border-contrast {
    border-color: #dadbdf;
  }
}

您可以将该代码包含在另一个scss文件中,如下所示:

代码语言:javascript
复制
// other-theme.scss
@use "sass:meta";

body.dark {
  @include meta.load-css("theme/code",
      $with: ("border-contrast": true));
}

这将产生以下css:

代码语言:javascript
复制
body.dark code {
  background-color: #6b717f;
  color: #d2e1dd;
  border-color: #dadbdf;
}

您可以在此处阅读有关此功能的更多信息

老式混合

但是如果你使用mixin and include,你基本上可以做同样的事情。

因此,假设您有一个要导入到另一个类中的类:

代码语言:javascript
复制
.title {
  font-size: 2em;
  font-weight: bold;
}

和另一个主题的sass文件:

代码语言:javascript
复制
.dark-theme {
  .title {
    font-size: 2em;
    font-weight: bold;
    color: white;
  }
}

您可以使用scss混合并将其导入到这两个文件中:

mixin.scss

代码语言:javascript
复制
@mixin shared-items() {
  .title {
    font-size: 2em;
    font-weight: bold;
  }
}

然后,在主题文件中:

white-theme.scss

代码语言:javascript
复制
@import './mixin.scss';

/* will be included as is without a parent class */
@include shared-items;

dark-theme.scss

代码语言:javascript
复制
@import './mixin.scss';

/* will be included inside the dark-theme class */
.dark-theme {
  .title {
    color: white;
  }

  @include shared-items;
}

这将生成此css:

代码语言:javascript
复制
.title {
  font-size: 2em;
  font-weight: bold;
}

.dark-theme {
  .title { color: white; }
  .title {
    font-size: 2em;
    font-weight: bold;
  }
}

请注意,您还可以将参数传递给mixin并将它们用作函数。因此,您可以轻松地传递颜色并将它们与主题变量一起使用。

例如:

代码语言:javascript
复制
# an example of giving a color to a placeholder mixin:
@mixin nk-placeholder($color: #C4C4CC) {
    &::-webkit-input-placeholder {
        color: $color;
        font: inherit;
    }
    &::-moz-placeholder {
        color: $color;
        font: inherit;
    }
    &:-ms-input-placeholder {
        color: $color;
        font: inherit;
    }
    &:-moz-placeholder {
        color: $color;
        font: inherit;
    }
    &::placeholder {
        color: $color;
        font: inherit;
    }
}

# same thing as above
@mixin shared-items($text-color: black) {
  .title {
    font-size: 2em;
    font-weight: bold;
    color: $text-color;
  }
}


.white-theme {
  @include shared-items;
}

.dark-theme {
  @include shared-items(white);
}
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59946608

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档