我有一个包含许多组件和子组件的角度应用程序。这些是通过运行ng generate component <component-name>
生成的,因此每个组件都有相同样式的组件标签:
@Component({
selector: 'app-<component-name>',
templateUrl: './<component-name>.component.html',
styleUrls: ['./<component-name>.component.css']
})
我的理解是,与此组件相关的所有CSS均应放置在src/<component-name>/<component-name>.component.css
中,并且在呈现时应自动应用于该组件。
但是,情况似乎并非如此,因为当我在CSS文件中放置某些指令时,它们似乎被忽略了。到目前为止,最明显的违规者是text-align
和任何类型的color
标签,而font-family
或vw
/ vh
这样的标签很好。
另一方面,当我将CSS放入src/styles.css
之类的文件中并为此文件放置在index.html
中时,我在那里拥有的任何CSS都正确地适用于自身,但适用于所有组件。除非某些组件必须共享命名约定,否则这不是问题,并且我无法指定我不是在[col-id="car"]
中使用table2.component.ts
而是在{{1 }}。
以下是我所谈论的例子:
我当前的网格如下:
给定列中的所有单元格共享[col-id="car"]
标签的值:
我的table5.component.ts
文件包含有关网格本身的大小调整说明以及一个字体说明符:
col-id
我知道这些正确适用,因为如果删除尺寸定义,则网格将变为1px x 1px,如果删除slab-grid.component.css
,则整个网格将恢复为正常字体,如下所示。列“ Thk”不会变回来,因为该应用程序另一部分中的另一个网格具有相同的.slab-grid {
width: 45vw;
height: 80vh;
font-family: monospace;
}
,并且上方的font-family
文件包含了col-id
的定义:
因此,根据我的理解,我是否要将以下语句添加到styles.css
[col-id="thk"]
我希望我会看到slab-grid.component.css
的列[col-id="yard_seq"] {
text-align: right;
}
右对齐。实际上,当我将此语句添加到Yard Seq
时,没有任何变化。但是,如果我转到位于col-id="yard_seq"
上的项目的主CSS文件并添加相同的语句,则会得到以下结果:
slab-grid.component.css
中,为什么我的CSS并不总是适用于相关组件?OR
src/styles.css
的元素仅在呈现某些组件时才应用于页面?我已经找到了可以解决此问题的解决方案。如果我从src/<component-name>/<component-name>.component.css
修改了自己的src/styles.css
样式选择器以使用后代选择器/src
,则可以使样式用[col-id="thk"]
覆盖冲突样式,而无需编辑冲突的样式文件。
答案 0 :(得分:0)
如果要在多个组件之间共享相同的样式,则每个组件都有样式,您必须创建一个共享的CSS文件,然后在styles.css中导入该文件,或者更好的解决方案是在角形上添加共享的CSS文件。 json配置文件。
父组件中的样式不适用于子组件。
仅且仅当您在styles.css上添加相同的样式或在angular.json上包含文件时
"styles": [
"src/styles.scss",
"src/scss/theme.d.scss",
"src/scss/global-scrollbar.d.scss",
"src/scss/acrylic.scss",
"src/scss/buttons.scss",
],
"scripts": [
"./node_modules/moment/min/moment.min.js"
]