我需要重用一个css类,但有条件地更改它的一些属性.

例如,我希望将这两个类合并为一个类,以避免出现重复的行(我的真实场景中有更多重复的属性)

&__logo-small {
    color: $white;
    display: block;
    max-width: 3rem;

    &--link {
        display: flex;
        flex-direction: row;
        height: 3rem;
        width: 3rem;  
    }
}

&__logo-big {
    color: $white;
    display: block;
    max-width: 6rem;

    &--link {
        display: flex;
        flex-direction: row;
        height: 6rem;
        width: 6rem;  
    }
}

我发现这很棘手,因为变化发生在不同的层面.如果这是一个下沉级别,我可以使用继承,但在这种情况下,我被卡住了.

这样的事情可以实现吗?

编辑:为了获得更好的上下文,我添加了一段HTML.

我想要做的是为两种标志提供支持.

旧的格式叫做‘LOGO’,新的格式叫做‘desktopLogo’.它们的呈现方式不同.

<img *ngIf="logo" class="navbar__logo" [src]="logo" alt="logo">
<a 
  *ngIf="desktopLogo"
  class="navbar__logo"
  (click)="onItemClicked(desktopLogo)"
  [attr.id]="desktopLogo.id"
>
  <img class="navbar__logo--link" [src]="desktopLogo.icon" alt="logo">
</a>

注意,类NAVBAR__LOGO--LINK仅适用于新版本.

谢谢大家友善的回答,我是在皮特的建议下成功的!

推荐答案

我认为你的修饰语用错了--在这种情况下,修饰语应该是小的和大的.

我会从一个基类开始,然后用修饰符更改位

&__logo {
  color: $white;
  display: block;
  max-width: 3rem;
  
  &-link {
    display: flex;
    flex-direction: row;
    height: 3rem;
    width: 3rem;
    
    &--big {
      height: 6rem;
      width: 6rem;
    }
  }
  
  &--big {
    max-width: 6rem;
  }
}
a normal logo would look like this:
<a href="class__logo-link"><img class="class__logo"></a>

a big logo would look like this:
<a href="class__logo-link class__logo-link--big"><img class="class__logo class__logo--big"></a>

如果您的html的 struct 类似于上面,您可能只想将修饰符放在链接上,那么您可以这样做

&__logo {
  color: $white;
  display: block;
  max-width: 3rem;
  
  &-link {
    display: flex;
    flex-direction: row;
    height: 3rem;
    width: 3rem;
    
    &--big {
      height: 6rem;
      width: 6rem;
      
      .class__logo {
         width: 6rem;
      }
    }
  }
}
a normal logo would look like this:
<a href="class__logo-link"><img class="class__logo"></a>

a big logo would look like this:
<a href="class__logo-link class__logo-link--big"><img class="class__logo"></a>

Css相关问答推荐

视频覆盖不适用于reactjs样式的组件

显示Reaction组件上的问题.使用FlexBox时的意外大小

CSS 内联 Flex 和段落换行

2 列 UL,右列中的列表项数量为奇数?

如何添加一个类以在开始时触发转换

在 WooCommerce 变体 Select 中转换属性文本以大写

CSS Grid 2 列和半高

直观地指示 IFrame 内的表单正在提交,但没有 javascript

如何仅包装左侧内容

Angular 导航栏问题

基于变量动态生成 CSS 类 - SCSS

中心表单提交按钮 HTML / CSS

Bootstrap:在列之间添加边距/填充空间

Bootstrap 3 - 在每个网格列之后打印布局和中断

什么是 DOM 回流?

将未知大小的大图像居中在一个较小的 div 中,并隐藏溢出

通过 Bootstrap4 对列进行排序

CSS3可以转换字体大小吗?

CSS 中的星号属性是什么意思?

如何在 CSS 中给出背景图像路径?