首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何在不复制混音的情况下将定制的材料主题包括在组件中:垫芯和角质材料.主题

如何在不复制混音的情况下将定制的材料主题包括在组件中:垫芯和角质材料.主题
EN

Stack Overflow用户
提问于 2018-10-26 03:19:58
回答 2查看 6.5K关注 0票数 13

我发现了一个非常有用的解释,关于如何将材料主题、配色方案/调色板应用于其他非材料组件这里

在阅读这篇文章之前,我想到了一些类似的东西,但无法想象如何考虑来自主题化你的角度材料应用程序的建议,如果我不想只有全局主题的话:

您的自定义主题文件不应导入其他SCSS文件。这将复制CSS输出中的样式。如果您想在其他SCSS文件中使用您的主题定义对象(例如,$糖果-应用-主题),那么主题对象的定义应该被分解为它自己的文件,与包含垫芯和角度材质-主题混合元素分开。

我想知道这一建议是否意味着只使用全局样式表/主题?否则,我无法想象如何在不违反上述建议的情况下将scss-主题导入组件的scss-文件中。

我对Sass很陌生,可能在这里漏掉了什么。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-02-05 05:40:17

我遇到了同样的问题,一些讨论可以找到这里,还有一个关于这里问题的有见地的博客。

要点是--正如主题指南正确指出的--您不应该在整个项目中多次导入mixins、@include mat-core()@include angular-material-theme($your-theme)。但是,当您在组件中使用SASS时,您通常希望引用主题变量和垫色调色板。将整个主题导入组件SASS中是很有诱惑力的,不小心重复了材料的混合。

我最终得到的解决方案是主题指南描述的解决方案。

主题对象的定义应该被分解成它自己的文件,与包含垫芯和角度材质主题混音的内容分开。

但由于最初我不清楚如何做到这一点,所以对于那些坚持这样做的人来说,这里是一步一步的:

  1. 创建一个包含SASS部分的assets/styles/partials文件夹

我的文件夹看起来如下:

代码语言:javascript
运行
AI代码解释
复制
assets/styles/partials/
  _palette.scss     // custom material palettes
  _scaffolding.scss // general mixins
  _theme.scss       // <-- our theme definition
  _variables.scss   // global variables like fonts and colors

_theme部分包含以下内容:

代码语言:javascript
运行
AI代码解释
复制
// assets/styles/partials/_theme.scss
@import '~@angular/material/theming';
@import 'variables';
@import 'scaffolding';
@import 'palette';

$my-primary: mat-palette($mat-primary);
$my-accent: mat-palette($mat-accent);
$my-warn: mat-palette($mat-warn);

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

就这样。不要在此文件中包括物料混频器mat-coreangular-material-theme

  1. 创建一个全局主题文件assets/styles/my-theme.scss。它只有三行:
代码语言:javascript
运行
AI代码解释
复制
// assets/styles/my-theme.scss
@import 'partials/theme';                    // our actual theme definition
@include mat-core();                         // the required mat-core mixin
@include angular-material-theme($my-theme);  // the declaration of our custom material theme

通过这样做,我们已经分离了我们的主题部分,包括我们所有的立方体调色板,脚手架和变量,从文件,包括垫核心和我们的定制材料主题。

  1. 在Angular.json中,将我的主题文件声明为全局样式。
代码语言:javascript
运行
AI代码解释
复制
"styles": [ "src/assets/styles/my-theme.scss" ]

这样,我们的应用程序始终使用我们的自定义材料主题,但是由于主题定义(在theme部分中)与包含材料混合元素(在my-theme中)是分开的,所以我们可以安全地将我们的theme部分包含到任何组件中,而不会重复任何css。

可以选择地,通过将partials路径添加到stylePreprocessorOptions中的Angular.json中,可以简化主题分部的导入:

代码语言:javascript
运行
AI代码解释
复制
"build": {
  (...)
  "options": {
    (...)
    "stylePreprocessorOptions": {
      "includePaths": [
        "src/assets/styles/partials"
      ]
    }
  }
}

只需在任何组件scss文件中使用@import 'theme',我们就可以访问所有变量和材料主题函数,如mat-color :)

票数 21
EN

Stack Overflow用户

发布于 2018-10-26 03:26:43

你现在应该这么做:

代码语言:javascript
运行
AI代码解释
复制
@import '~@angular/material/theming';
@include mat-core();

$candy-app-primary: mat-palette($mat-indigo);
$candy-app-accent:  mat-palette($mat-pink, A200, A100, A400);
$candy-app-warn:    mat-palette($mat-red);

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

@include angular-material-theme($candy-app-theme);

但你应该这样做:

代码语言:javascript
运行
AI代码解释
复制
// First file variables.scss
@import '~@angular/material/theming';
@include mat-core();

$candy-app-primary: mat-palette($mat-indigo);
$candy-app-accent:  mat-palette($mat-pink, A200, A100, A400);
$candy-app-warn:    mat-palette($mat-red);
代码语言:javascript
运行
AI代码解释
复制
// Second file
@import 'src/variables';

$candy-app-theme: mat-light-theme($candy-app-primary, $candy-app-accent, $candy-app-warn);
@include angular-material-theme($candy-app-theme);

我就是这么理解的。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53007605

复制
相关文章
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
coder_koala
2019/07/30
4290
为什么HTTPS比HTTP更安全?
为什么 classmethod 比 staticmethod 更受宠?
我们知道,classmethod 和 staticmethod 都可以作为函数的装饰器,都可用于不涉及类的成员变量的方法,但是你查一下 Python 标准库就会知道 classmethod 使用的次数(1052)要远远多于 staticmethod(539),这是为什么呢?
somenzz
2021/12/27
5910
为什么 classmethod 比 staticmethod 更受宠?
为什么 https 比 http 更安全?
在HTTPS出现之前,所有请求都是以明文方式送出的,那么如果有人在传输途中偷听或者抓包的话,你的所有通信内容都会泄漏。比较安全的方法是将通信内容加密在发送给对方。加密方法有两种,对称加密和非对称加密。
杰哥的IT之旅
2020/06/18
6350
为什么 https 比 http 更安全?
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
前端迷
2019/08/31
4680
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
Nealyang
2019/09/29
7840
为什么HTTPS比HTTP更安全?
为什么HTTPS比HTTP更安全?
近几年,互联网发生着翻天覆地的变化,尤其是我们一直习以为常的HTTP协议,在逐渐的被HTTPS协议所取代,在浏览器、搜索引擎、CA机构、大型互联网企业的共同促进下,互联网迎来了“HTTPS加密时代”,HTTPS将在未来的几年内全面取代HTTP成为传输协议的主流。
心莱科技雪雁
2019/06/05
4480
为什么HTTPS比HTTP更安全?
前缀、中缀、后缀表达式
转至: 前缀、中缀、后缀表达式 它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀
Christal_R
2017/12/25
1.1K0
前缀、中缀、后缀表达式
在函数式编程语言中,为了表示方便,出现了一些新的语法格式。所谓前缀、中缀、后缀表达式,它们之间的区别在于运算符相对与操作数的位置不同,为了说明它们的概念,首先来看一下中缀表达式。 所谓中缀表达式,就是将函数名放到两个操作数中间的表达式,其中,左侧的操作数代表函数对象或值,右侧的操作数代表函数的参数值。例如: (3 + 4) × 5 - 6 就是中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式 前缀表达式 前缀表达式又称为前缀记法、波兰式,主要用于表示运算符位于操作数
xiangzhihong
2018/02/08
1.1K0
前缀、中缀、后缀表达式
前缀、中缀、后缀表达式,它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。对计算机来说中缀表达式是很复杂的,因此计算表达式的值时,通常需要先将中缀表达式转换为前缀或后缀表达式,然后再进行求值。对计算机来说,计算前缀或后缀表达式的值非常简单。 举例: (3 + 4) × 5 - 6  中缀表达式 - × + 3 4 5 6  前缀表达式 3 4 + 5 × 6 -  后缀表达式 前缀表达式的求值: 从右至左扫描表达式,遇到数字时,将数字压入堆栈,
yawn
2018/03/14
8560
为什么 Nginx 比 Apache 更牛叉?
Nginx才短短几年,就拿下了Web服务器大壁江山,众所周知,Nginx在处理大并发静态请求方面,效率明显高于Httpd,甚至能轻松解决C10K问题。
Java技术栈
2023/02/27
4670
为什么 Nginx 比 Apache 更牛叉?
前缀、中缀、后缀表达式
它们都是对表达式的记法,因此也被称为前缀记法、中缀记法和后缀记法。它们之间的区别在于运算符相对与操作数的位置不同:前缀表达式的运算符位于与其相关的操作数之前;中缀和后缀同理。 举例: (3 + 4) × 5 - 6 就是中缀表达式 - × + 3 4 5 6 前缀表达式 3 4 + 5 × 6 - 后缀表达式 中缀表达式(中缀记法) 中缀表达式是一种通用的算术或逻辑公式表示方法,操作符以中缀形式处于操作数的中间。中缀表达式是人们常用的算术表示方法。 虽然人的大脑很容易理解与分析中缀表达式,但对计算
_gongluck
2018/03/08
1.3K0
如何添加前缀和后缀?
例如:如果是数字100,我们需要变成为"自定义100自定义",那我们需要怎么样处理呢?
逍遥之
2020/03/23
1.8K0
字典树和前缀树_前缀树和后缀树
常关注本blog的读者朋友想必看过此篇文章:从B树、B+树、B*树谈到R 树,这次,咱们来讲另外两种树:Tire树与后缀树。不过,在此之前,先来看两个问题。 第一个问题: 一个文本文件,大约有一万行,每行一个词,要求统计出其中最频繁出现的前10个词,请给出思想,给出时间复杂度分析。
全栈程序员站长
2022/10/04
1.4K0
字典树和前缀树_前缀树和后缀树
前缀中缀后缀表达式
<操作数><操作符><操作数> 就像我们平时用到的大部分计算表达式都是中缀 比如 1+1 3*2 等等 中缀表达式虽然很方便人使用,但是对机器却不太友好 比如我要计算(1+1)*3+2 机器将怎样区分操作符的优先级,机器不是人,机器是很傻的,所以我们要提供一种新的算法,让机器无脑就可以算。 这时候就要引出 后缀表达式
用户7272142
2023/10/11
2200
【答疑解惑】++前缀和后缀的区别
我的解答: 这个知识点在C、C++和Java中都是一样的,++前缀就进行自增然后再用自增后的值,++后缀则是先用这个值,然后再进行自增。 上面的题目是一个很好的面试题,网友们还是好好看一下,如果是让输
程序员互动联盟
2018/03/14
8280
【答疑解惑】++前缀和后缀的区别
前缀、中缀、后缀表达式「建议收藏」
关键字:概念, 前缀表达式, 前缀记法, 中缀表达式, 中缀记法, 波兰式, 后缀表达式, 后缀记法, 逆波兰式
全栈程序员站长
2022/07/05
2K0
mybatis中去除多余的前缀或者后缀
转载自 https://blog.csdn.net/qq_33315102/article/details/80253023
allsmallpig
2021/02/25
9270
为什么插入排序比冒泡排序更受欢迎?
插入排序和冒泡排序的时间复杂度相同,都是 O(n2),在实际的软件开发里,为什么我们更倾向于使用插入排序算法而不是冒泡排序算法呢?
大猫的Java笔记
2020/09/30
8820
为什么前后端分离了,你比从前更痛苦?
前后端分离早已经不是新闻,当真正分离之后确遇到了更多问题。要想解决现在的痛,就要知道痛的原因:
Jean
2018/10/18
6050
为什么前后端分离了,你比从前更痛苦?
HTML常用符号
大家好,又见面了,我是全栈君 HTML转义符号 HTML常用符号: 显示一个空格 &nbsp; &#160; < 小于 &lt; &#60; > 大于 &gt; &#62; & &符号
全栈程序员站长
2022/07/15
3.2K0

相似问题

localStorage值不会自动更新

30

用AlpineJS实现数据采集

12

localStorage值不会自动更新

25

如何显示localStorage数据

28

如何重用AlpineJs数据?

120
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文