如果没有:: ng-deep和!important,则无法设置mat-tab样式

时间:2018-02-08 16:08:27

标签: html css angular element important

我有一些使用HTML中的mat-tab元素的组件。在尝试在CSS中设置这些元素的样式时,我只能使用::ng-deep .mat-tab-label {}来设置样式,并将!important放在至少一个样式更改旁边。我不想长期留在申请表中,特别是在阅读this文章之后。

以下是查看开发人员工具中元素的方法:

<mat-card class="mat-card">
  <mat-tab-group class="mat-tab-group mat-primary">
    <mat-tab-header class="mat-tab-header">
      <div class="mat-tab-header-pagination mat-tab-header-pagination-before mat-elevation-z4 mat-ripple mat-tab-header-pagination-disabled>
      <div class="mat-tab-label-container">
        <div class="mat-tab-list">
          <div class="mat-tab-labels">
            <div class="mat-tab-label mat-ripple mat-tab-label-active ng-star-inserted">
            <mat-ink-bar class="mat-ink-bar">

如果不在CSS中使用::ng-deep!important来设置这些元素的样式,我该怎么办?

1 个答案:

答案 0 :(得分:4)

  

如果不使用:: ng-deep来设置这些元素的样式,我该怎么办?   并且!在CSS中很重要?

在这种情况下,您可以执行的解决方案是使用选择器特异性,然后将您的样式放在根样式/src/styles.css中 (注意:不要将它放在组件样式中,你的样式将不起作用)

/* label style */
.mat-tab-label{
  background: green;
  color:white;
}
/* focus style */
.mat-tab-group.mat-primary .mat-tab-label:not(.mat-tab-disabled):focus, .mat-tab-group.mat-primary .mat-tab-link:not(.mat-tab-disabled):focus, .mat-tab-nav-bar.mat-primary .mat-tab-label:not(.mat-tab-disabled):focus, .mat-tab-nav-bar.mat-primary .mat-tab-link:not(.mat-tab-disabled):focus{
  background: red;
}
/* ink bar style */
.mat-tab-group.mat-primary .mat-ink-bar, .mat-tab-nav-bar.mat-primary .mat-ink-bar{
  background: yellow;
  height: 10px;
} 

要查看实时示例代码,请参阅此链接 -  https://stackblitz.com/edit/dmgrave-ng-so-anser-tabs-style?file=styles.css

希望这有帮助。