【发布时间】:2018-09-13 11:45:08
【问题描述】:
查看 Angular Material 文档,他们建议对每个组件使用 -theme 文件来管理将任何与主题相关的样式应用于特定类。
在我看来,这种方法的一些缺点是:
- 相当冗长
- 将样式分成两个不同的位置
- 所有前端开发人员都需要了解 Angular Material 颜色的工作原理
- 使更改值变得更加困难(例如,我们可能一直使用
mat-color($primary, 200)作为边框颜色,现在想将其更改为mat-color($primary, 300)。这将在整个代码库中重复。
如果设计语言一致,则只会使用一部分颜色(例如,主调色板中的 4 种颜色、重点调色板中的 3 种颜色、几种不同的前景色/背景色等)。
鉴于上述情况,使用_colors.scss 定义使用主题的确切颜色而不是希望开发人员每次都从主题中提取正确的值不是更有意义吗?
例如可能是这样的:
$clr-primary-default: mat-color($primary);
$clr-primary-contrast: mat-color($primary, default-contrast);
$clr-primary-light: mat-color($primary, lighter);
$clr-primary-dark: mat-color($primary, darker);
$clr-accent-default: mat-color($accent);
$clr-accent-light: mat-color($accent, lighter);
$clr-accent-dark: mat-color($accent, darker);
$clr-default-text: mat-color($foreground);
$clr-secondary-text: mat-color($foreground, secondary-text);
//etc
然后,我可以简单地导入colors.scss 文件并直接在*.component.scss 文件中使用变量,而不是为每个需要特定颜色的组件创建单独的-theme 文件。
只是想验证上述内容是否合理,并且我没有遗漏任何明显会导致痛苦的事情?
另一个棘手的部分是如何在单独的colors 文件中有效地定义这些文件,因为该文件需要访问主题数据。
【问题讨论】:
标签: css angular sass angular-material2