- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我必须通过单击按钮使 Angular2 组件看起来完全不同(不仅仅是颜色)。非常像不同的 CSS“皮肤”或“主题”。如果以后可以添加一些“皮肤”也很好。
我知道我可以简单地设置 ViewEncapsulation.None
并像过去一样使用可交换的 CSS 文件来完成。但是我想知道是否有可能使用ViewEncapsulation
?
感谢任何提示!谢谢,马库斯
最佳答案
可以添加
@HostBinding('attr.theme') theme = this.globalService.theme;
到你的组件并根据类的值制作样式
:host([theme="dark"]) {
color: lightgrey;
background-color: black;
}
:host([theme="light"]) {
color: black;
background-color: white;
}
您不能在运行时添加/删除组件样式。
如果您向 index.html 添加样式,那么您将失去样式封装(使用 ViewEncapsulation.Emulated
(默认)),但您可以随意添加/删除它们。
关于css - 使用 ViewEncapsulation 时,是否可以将 "skin"或 "theme"设置为带有 CSS 的 Angular2 组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37998334/
谁能解释一下 angular2ViewEncapsulation.Native、 ViewEncapsulation.None 和 ViewEncapsulation.Emulated 之间的区别强>
尝试更改封装时,会出现 Emulated、Native、None 和最后一个新的“ShadowDom”4 个选项。我知道 ViewEncapsulation.Native用于使用 Shadow DOM
Angular 的 ViewEncapsulation.ShadowDom 与 ViewEncapsulation.Emulated 有什么区别? 我了解 ViewEncapsulation.None
我最近一直在搞乱 ViewEncapsulation 和 ::ng-deep,遇到了两个不同的问题,这激起了我的好奇心。 假设我有一个组件: 从外部看,我可以通过以下方式为 toolti
在 Angular 中,默认模式是封装:ViewEncapsulation.Emulated 此模式通过使用 CSS 选择器启用样式封装。然而,'encapsulation: ViewEncapsul
我创建了一个新的 Angular CLI 元素和一个组件,我在其中尝试处理 css 特异性。在我尝试的地方,类样式会覆盖标签样式,但只有在 Angular 元素中它才起作用,反之亦然 我发现 View
在我当前的 Angular 7 应用程序中,我们正在努力处理来自库的组件,它需要一些 css 资源。我们不想将这些资源应用到我们应用程序的所有其余部分,而是应用到一个特定的组件,它的子组件和孙组件。
@Component({ ... ... ... encapsulations: ViewEncapsulation.None }) 当我使用 封装就像它与应用程序中其他组件中的默认样式冲突。 最佳答
我遇到的问题是,在尝试通过 ID 访问 html 元素时出现以下错误。当用户单击按钮以将不同的样式类应用于元素时,我尝试访问 classList。类列表和元素通常始终为空,除非我将 viewEncap
我添加了 ::ng-deep 组合器来引用组件中的内容投影元素。但是当我从默认 (ViewEncapsulation.Emulated) 切换到 ViewEncapsulation.ShadowDom
我在 firefox 和 edge 以及 ipad chrome 中使用 ViewEncapsulation.Native 加载 Angular 组件时遇到问题,在 mac 上的 safari、win
我正在尝试使用 styleUrls声明我的 Angular 2 组件以利用 View Encapsulation 时的属性但是在 Angular 完成初始化后将元素插入 DOM 时似乎出现了问题。 我
我想用 ViewEncapsulation.Native 制作组件,它使用 Bootstrap 4,而其他人使用 Bootstrap 3。这是 Bootstrap 4 的组件: import { Co
在 Material2 项目中,每个组件都使用 ViewEncapsulation.None。 (例如 MdButton ) 最近,md-toolbar 的封装刚刚更改为无. 为什么会这样?封装 CS
我必须通过单击按钮使 Angular2 组件看起来完全不同(不仅仅是颜色)。非常像不同的 CSS“皮肤”或“主题”。如果以后可以添加一些“皮肤”也很好。 我知道我可以简单地设置 ViewEncapsu
我安装了“react app 2”和 node-sass。它在 SCSS 上运行良好。但我只想知道如何创建组件特定的 SCSS,如 Angular(永远不会与其他组件 SCSS 发生冲突) Angul
我是一名优秀的程序员,十分优秀!