css - Angular :一个组件的 CSS 与另一个组件冲突。
问题描述
我的项目层次结构如下:
Component_HomePage
|
|---> Component_Tool1
| |
| ---> Component_Inner_01
|
|---> Component_Tool2
|
---> Component_Inner_02
显然,所有组件都有不同的样式。
Component_Inner_01
虽然&中有一些 CSS 类Component_Inner_02
名称相同但内容不同。
例如:
Component_Inner_01.CSS 有list-group-item
类
.list-group-item{
padding: 0px;
}
Component_Inner_02.CSS 也有,list-group-item
但内容不同。
.list-group-item{
padding: 10px;
}
因此,当我第一次浏览Component_Inner_01
list-group-item 时,将 padding 设为 0px,这是完美的。
但是当我在查看Component_Inner_01
页面后查看Component_Inner_02
页面时,Component_Inner_01 的 list-group-item 类将填充为 10px。
我发现问题出在Component_Inner_02
Component_Inner_02 的装饰器具有encapsulation
设置为的元数据ViewEncapsulation.None
但我不知道是什么让 CSS 类在拥有时相互冲突encapsulation: ViewEncapsulation.None
,有人可以解释一下吗?
解决方案
视图封装意味着您的视图被封装:这意味着 Angular 向您的标签添加随机属性以将它们彼此区分开来。
如果您使用encapsulation: ViewEncapsulation.None
,那么您的视图将不再被封装:样式没有随机属性,并且开始发生冲突。
如果您想停止它,请从您的组件中删除该行。
CLI 提供了一个全局样式表style.[extension]
,您可以在其中放置所有全局样式。您无需停用封装。
推荐阅读
- python - 如何访问 Django 模型字段值?
- php - CAKE PHP 3.6 setViewVars 未将变量传递给电子邮件模板
- android - android 应用程序生成的密钥哈希之间的差异
- c# - 使用链表从具有 x 和 y 坐标的点形成三角形
- javascript - 插入成功脚本不显示
- matlab - MATLAB 降低图像质量
- c++ - 如何连接整数和 wstring 并将它们放入静态 char 数组
- c# - 尝试将标签从 IIS 打印到打印机但没有运气
- css - 如何使用 Styled-Components 设置全局字体系列
- solr - 如何为 solr cloud 中的每个集合使用单核?