改变角材料的原色2

duk*_*636 11 angular-material2 angular

我正在尝试更改Angular Material 2(alpha 6)中的默认主色.

我从这个官方文档中得到了一些想法.

我所在_default-theme.scssnode_modules > @angular2-material > core > style和紫色以下行更换颜色水鸭.

$md-primary: md-palette($md-teal, 500, 100, 700, $md-contrast-palettes);
Run Code Online (Sandbox Code Playgroud)

但是颜色青色仍然显示在页面中,粉红色从未出现过.我错过了什么?如何更改原色?

(我使用Angular Material 2 alpha 6和Angular 2 RC4)

Dan*_*rez 27

Angular 4+和Angular Material 2.0.0 beta 10,Angular CLI 1.3+

你将不得不创建一个scss文件"exampleTheme.scss",你将它添加到angular-cli.json angular-cli.json:

"styles": [
    //if you are using --scss the file is called style.scss
    "styles.css",
    "customTheme.scss"
 ],
Run Code Online (Sandbox Code Playgroud)

customTheme.scss中,您可以使用以下代码更改颜色:

@import '~@angular/material/theming';
@include mat-core();

  $primary: mat-palette($mat-blue,200);
  $accent: mat-palette($mat-orange,200);

  $theme: mat-light-theme($primary, $accent);

@include angular-material-theme($theme);`
Run Code Online (Sandbox Code Playgroud)

多个主题 如果您想要一个额外的主题,请阅读最后链接的指南.但是这里只是一个小概述,您只需要使用新变量和颜色复制主题过程

  $dark-primary: mat-palette($mat-blue,800);
  $dark-accent: mat-palette($mat-orange,800);

  $dark-theme: mat-dark-theme($primary, $accent);
Run Code Online (Sandbox Code Playgroud)

并添加

  .material-dark-theme {
    @include angular-material-theme($dark-theme);
  }
Run Code Online (Sandbox Code Playgroud)

有关更多详细信息,请阅读角度材料主题指南

  • 正确的解决方案,我想补充一点,对于Angular 4和Angular Material 2.0,https://material.angular.io/guide/theming上有一个更新,过程是相同的,但代码改变了一点. (2认同)
  • 是否可以更改自定义代码,如“#CE2029” (2认同)

mar*_*wie 0

我今天刚刚解决了这个问题...

正如上面的评论所述,正式还不可能,但您可以在 sass 文件中单独覆盖颜色。这需要一点工作,但效果很好。

我的 scss 文件结构

/scss
--/angular-material
-- _button.scss
-- _checkbox.scss
-- _input.scss
--  //etc
-- angular-material.scss // I @import all angular-material files into this
 main.scss // angular-material is imported into my main scss file...
Run Code Online (Sandbox Code Playgroud)

举个例子......我的 angular-material/_input.scss 看起来像这样:

:root md-input {

@extend %typo-base;
padding-top: 1px;

.md-input-placeholder {
  color: $light-grey-color;
}

.md-input-placeholder.md-focused {
  color: $primary-color;
}

.md-input-underline {
  border-color: $light-grey-color;
}

.md-input-underline .md-input-ripple {
  background-color: $primary-color;
}

//...etc
}
Run Code Online (Sandbox Code Playgroud)

选择:root器穿透 Shadow dom 来覆盖样式。颜色变量从我的主主题导入到文件中angular-material.scss,以便它们可以在任何材质覆盖文件中使用。

希望这可以帮助。