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

如何在不复制混音的情况下将定制的材料主题包括在组件中:垫芯和角质材料.主题
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

复制
相关文章
webrtc日志系统的使用
    在webrtc的native开发中,除了IDE调试以外,日志调试是不可或缺的手段。本文介绍webrtc日志系统的基本使用方法。
用户4148957
2022/06/14
1.5K0
webrtc日志系统的使用
【WebRTC】WebRTC学习总结
WebRTC 是一项「实时通讯技术」,它允许网络应用或者站点,在不借助中间媒介的情况下,建立浏览器之间点对点(Peer-to-Peer)的连接,实现视频流和(或)音频流或者其他任意数据的传输。WebRTC包含的这些标准使用户在无需安装任何插件或者第三方的软件的情况下,创建点对点(Peer-to-Peer)的数据分享和电话会议成为可能。本篇文章从自身实践出发,结合相关代码,总结WebRTC实现的基本流程。
pingan8787
2020/05/14
3.8K0
【WebRTC】WebRTC学习总结
webrtc技术原理_webrtc开源项目
webrtc冗余打包方式有三种:Red(rfc2198)、Ulpfec(rfc5109)、Flexfec(草案)。其中Red和Ulpfec要成对使用。
全栈程序员站长
2022/09/22
3.4K0
webrtc技术原理_webrtc开源项目
WebRTC直播技术(一)-初探WebRTC
本文介绍了WebRTC直播技术,包括相关概念、API、信令流程以及SDP握手等内容。通过这些介绍,读者可以了解WebRTC直播的原理和实现方式。
IMWeb前端团队
2017/12/29
4K0
WebRTC直播技术(一)-初探WebRTC
「WebRTC」最新 WebRTC 源码目录结构分析
最近一直在研究 WebRTC源码,发现目前网上分析WebRTC源码的资料非常少。随着Google不断推进WebRTC标准,WebRTC 代码的变化非常大,很多以前的分析文章目前都与最新的代码无法对应上了。
音视频_李超
2020/04/02
4.3K0
「WebRTC」最新 WebRTC 源码目录结构分析
WebRTC直播技术(一)-初探WebRTC
信令是WebRTC用来协助建立p2p通讯的。主要用于协商双方通讯过程,传递基本信息SDP(会话描述协议)。 例如:打开/关闭连接的指令;视频信息,比如解码器,解码器的设置,带宽,以及视频的格式等;网关信息,比如双方的 IP,port... 一个简单的SDP格式:
IMWeb前端团队
2019/12/03
2.4K0
WebRTC直播技术(一)-初探WebRTC
通过WebRTC进行实时通信-概述
使用WebRTC构建获取视频、从 webcam获取快照,端与端共享应用。通过这种方法,我们来学习如何使用核心 WebRTC API ,并通过 Node.js建立一个消息服务器。
音视频_李超
2020/04/02
7030
通过WebRTC进行实时通信-通过RTCPeerConnection传输视频
RTCPeerConnection 是调用WebRTC传输音视频和交换数据的API。这个例子是在同一个页面中两个RTCPeerConnection对象之间建立连接。没有什么实际价值,但却能很好的证明RTCPeerConnection是如何工作的。
音视频_李超
2020/04/02
5.6K0
TSINGSEE青犀视频开发WebRTC时通过哪些技术来创建WebRTC链接?
大家知道前段时间我们已经把webrtc协议视频流的输出成功运用在了EasyGBS上,下一步就是要把webrtc协议逐渐普及到我们其他的平台上,方便用户的使用。
TSINGSEE青犀视频
2021/06/30
5070
TSINGSEE青犀视频开发WebRTC时通过哪些技术来创建WebRTC链接?
WebRTC 的未来
IETF 首先做的工作是开发了 NICER。NICER 是一种在一次对话中切换 4G 和 wifi 的一种方法,这给 WebRTC 增加了一个新功能。
用户1324186
2022/05/25
1.3K0
WebRTC 的未来
iOS下WebRTC音视频通话(一)WebRTC介绍WebRTC 过程
在iOS下做IM功能时,难免都会涉及到音频通话和视频通话。QQ中的QQ电话和视频通话效果就非常好,但是如果你没有非常深厚的技术,也没有那么大的团队,很难做到QQ那么快速和稳定的通话效果。 但是利用WebRTC技术,即使一个人也能够实现效果不错的音视频通话。本篇介绍WebRTC的基础概念。
Haley_Wong
2018/08/22
3.9K0
【教程】如何使用Javascript构建WebRTC视频直播?
WebRTC是一个免费的开源项目,它通过简单的API为浏览器和移动应用程序提供实时通信功能。本文将向你展示WebRTC的基本概念和功能,并指导你使用Node.js构建自己的WebRTC视频直播。
TSINGSEE青犀视频
2021/04/12
4.4K0
WebRTC系列分享 | WebRTC视频QoS全局技术栈
导语 | WebRTC真是一套让人既爱又恨的开源代码。一方面,WebRTC里面有一套很完善很系统的QoS策略。但另一方面,WebRTC代码庞大且版本更新迭代特别快,代码的阅读和学习难度很大。为了方便大家学习了解,我们在这里对WebRTC的QoS思想及算法实现做了一些梳理总结,以系列分享的方式呈现给大家,供大家参考。 概述 目前总结出WebRTC用于提升QoS的方法有:NACK、FEC、SVC、JitterBuffer、IDR Request、Pacer、Sender Side BWE、Probe、VFR(
腾讯云音视频
2022/03/15
2.8K0
webRTC 初探
webRTC是英文Web Real-Time Communication的缩写,中文翻译网页实时通信,是浏览器不需要服务器的中转,可以直接通信的技术
frontoldman
2019/09/02
1.8K0
adapter for webrtc
浏览器直接调用webrtc相关api接口,比如调用PeerConnection。 但是实际上不同浏览器上可能这个API不同:
ghostsf
2022/09/09
1.4K0
创建 WebRTC 会话
一WebRTC 是一套基于 Web 的实时通信解决方案,通过浏览器内置的 API 来支持音视频通道的搭建。
派大星在吗
2021/12/05
5.6K0
WebRTC 点对点直播
作者:villainthr WebRTC 全称为:Web Real-Time Communication。它是为了解决 Web 端无法捕获音视频的能力,并且提供了 peer-to-peer(就是浏览器
腾讯IVWEB团队
2017/03/13
10.3K0
编译ios WebRTC
之前我还以为WebRTC有很多实现,结果最终大家用的都是chromium里的代码。
王沛文
2020/03/24
4.4K1
关于WebRTC的简单了解报告(同事整理)
WebRTC是Google于2011年发布的一个开源项目,它提供基于API的Web浏览器和移动应用程序之间的通信,包括音频、视频和数据的传输。 它消除了对本机插件和应用程序安装的依赖,使这些连接易于使用,并得到所有主要浏览器和移动操作系统的支持。
TSINGEYE清眸物联
2023/01/04
2K0
WebRTC Insertable Stream 初探与 WebRTC"管道化"
在"WebRTC的现状与未来"(https://webrtchacks.com/webrtc-today-tomorrow-bernard-aboba-qa/)这篇文章中讲述了WebRTC要带来的一些新的特性, 这里我们重点探索一下WebRTC Insertable Streams。
刘连响
2022/03/30
2.7K0

相似问题

通过JavaScript阻止WebRTC

149

运行Chrome Webrtc日志

147

如何用javascript覆盖WebRTC的WebRTC构造函数

13

如何通过Webrtc识别在线用户

10

下载webrtc源代码错误

13
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

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

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档