Ruk*_*mad 10 css angular-material angular
我的组件的css文件中包含以下css:
.mat-expansion-panel-body {
padding: 0;
}
Run Code Online (Sandbox Code Playgroud)
而且,因此我希望看到以下dom元素会显示此规则(即使被覆盖):
<div class="mat-expansion-panel-body">...</div>
Run Code Online (Sandbox Code Playgroud)
但是,我看到在开发工具中应用的全部是:
.mat-expansion-panel-body {
padding: 0 24px 16px;
}
Run Code Online (Sandbox Code Playgroud)
我注意到该元素没有其他主机元素具有的_ngcontent-c19类,因此我假设这是视图封装的情况。
但是,在阅读了:: ng-deep和/ deep /的弃用以及其他封装不推荐使用的封装后,从组件的css文件中对该元素进行样式设置的更好解决方案是什么?
aln*_*sre 10
"@angular/material": "^10.2.7"您将encapsulation: ViewEncapsulation.None属性添加到 @Component 装饰器中
@Component({
selector: '...',
templateUrl: '...',
styleUrls: ['...'],
encapsulation: ViewEncapsulation.None
})
export class examplePage{}
Run Code Online (Sandbox Code Playgroud)
然后这个 CSS 将与 !important 一起工作
.mat-expansion-panel-body {
padding: 0 !important;
}
Run Code Online (Sandbox Code Playgroud)
请注意,::ng-deep并且/deep/不适用于新版本的 angular/material
小智 6
:host ::ng-deep .mat-expansion-panel-body {
padding: 0 !important;
}
Run Code Online (Sandbox Code Playgroud)
效果最好,现在您不必考虑这种样式适用于您的所有组件。使用:host仅将其应用于当前主机组件
如果您不想使用:: ng-deep,一种可能的解决方案是像这样在styles.css文件中设置样式。
.mat-expansion-panel-body {
padding: 0 !important;
}
Run Code Online (Sandbox Code Playgroud)
这将除去填充物,但要小心,因为它将从所有垫子扩展面板主体元素中除去它。您可以通过在扩展面板中设置特定的类,然后在styles.css中执行类似的操作来绕过此操作
.my-special-class .mat-expansion-panel-body {
padding: 0;
}
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您甚至都不需要!important。这是一个例子。
https://stackblitz.com/edit/angular-a6necw
我::ng-deep在组件css中进行设置,它在我这边工作。
::ng-deep .mat-expansion-panel-body{
padding: 0;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1895 次 |
| 最近记录: |