【问题标题】:Styling card with different styles which were created using ngFor in Angular在 Angular 中使用 ngFor 创建的具有不同样式的样式卡
【发布时间】:2019-09-30 12:22:14
【问题描述】:

所以我要做的是将不同的样式应用于在 Angular 中使用 ngFor 创建的卡片。

现在它看起来像这样:

我的目标是为每张卡片设置不同的样式。由于它是使用 ngFor 循环创建的,因此我只能更改所有样式的样式。

然后我设法为每个卡片元素分配一个类:

<div *ngFor="let module of modules" class="{{module.name}}">

之后我在 CSS 中应用了样式:

div.Rekrutacja {
  background-color: rgb(1, 1, 1);
} 

这部分工作。它选择了第一个元素,但我无法真正修改它。我将背景颜色设置为黑色,我得到了:

所以它只适用于某个区域(我不知道它是什么区域),我无法进入实际的 mat-card 以将其与其他区域分开。

HTML:

    <div class="flex-container">
  <div *ngFor="let module of modules" class="{{module.name}}">
    <mat-card matRipple [matRippleColor]="white"  class="flex-items hvr-reveal" *ngxPermissionsOnly="module.permissionsRequired">
      <span routerLink={{module.routing}}>
        <mat-card-header>
          <mat-card-title>
            <h1>
              <p style="text-align: center;">
                {{module.name}}
              </p>
            </h1>
          </mat-card-title>
        </mat-card-header>
        <div class="mat-icon-card">
          <p style="text-align: center">
          <mat-icon>{{module.icon}}</mat-icon>
          </p>
        </div>
        <mat-divider></mat-divider>
        <mat-card-content>
          <h3>
            <p style="text-align: center">
              {{module.description}}
            </p>
          </h3>
        </mat-card-content>
      </span>
    </mat-card>
  </div>
</div>

CSS:

.mat-card {
  background-color: rgba(255, 255, 255, 0.7);
}

div.Rekrutacja {
  background-color: rgb(1, 1, 1);
}

TS:

modules: any = [
    {
      name: 'Rekrutacja',
      icon: 'group',
      description: 'Moduł obsługi działu rekrutacji. Zarządzanie kandydatami.',
      routing: '/recruitment',
      permissionsRequired: [CONSTS.permissionCodes.accessRecruitmentModule]
    },
    {
      name: 'Sprzedaż',
      icon: 'work',
      description: 'Moduł obsługi działu sprzedaży. Zarządzenie firmami, osobami kontaktowymi i leadami.',
      routing: '/sales',
      permissionsRequired: [CONSTS.permissionCodes.accessSalesModule]
    },
    {
      name: 'Ustawienia',
      icon: 'settings',
      description: 'Moduł panelu administracyjnego. Zarządzanie użytkownikami i ustawieniami aplikacji.',
      routing: '/admin-panel',
      permissionsRequired: [CONSTS.permissionCodes.accessAdminPanelModule]
    },
  ];

【问题讨论】:

  • 您是否需要根据逻辑设置这些样式?是不是每张卡都有不同的风格,并且没有应用该风格的相关逻辑?
  • 以前我只需要所有三张卡片都有白色背景。现在我需要为每张卡片应用不同的背景颜色。这听起来很简单,但事实证明我不能只设计一个元素。
  • 你尝试在你的css中写::ng-deep div.Rekrutacja .mat-card { background-color: rgb(1, 1, 1) !important; }吗?这应该绕过样式封装。

标签: html css angular


【解决方案1】:

不要定位包裹&lt;mat-card&gt;&lt;div&gt;,这会导致将背景颜色应用于&lt;div&gt;,而是定位各个&lt;div&gt;的实际&lt;mat-card&gt;

div.Rekrutacja .mat-card {
  background-color: rgb(1, 1, 1);
}

div.Sprzedaż .mat-card {
  background-color: blue;
}

div.Ustawienia .mat-card {
  background-color: yellow;
}

这是一个简化的example 实际操作。

希望对您有所帮助!

【讨论】:

  • 老兄,像魔术一样工作!我确实做到了,但是我一起写了 div.Rekrutacja.mat-card,这就是为什么它不起作用!非常感谢!
  • 你能解释一下 .div.Rekrutacja 和 .div .Rekrutacja 有什么区别吗?
  • @Lbovsky 如果您在div.Rekrutacja 之间有一个空格字符,那将尝试在 上以Rekrutacja 类为目标的any 元素div 的孩子(后代)。如果没有空格,div.Rekrutacja 会找到具有类 Rekrutacja&lt;div&gt; 元素。我认为div.Rekrutacja 的性能比div Rekrutacja 更好。
猜你喜欢
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-17
  • 2020-08-14
  • 1970-01-01
相关资源
最近更新 更多