如何简单地 CSS class 具有相同的属性,除了一个 属性

How to simply CSS class with same properties except one property

我正在开发一个 React 网络应用程序,它有 2 列,分别是 leftCol 和 rightCol className。两者 class 几乎相同 属性 只是 z-index 不同。以下是造型

&__rightCol {
​ position : relative;
 ​box-sizing: border-box;
 ​z-index: 0;

 ​&_box {
  ​display : none;
  ​}
}

&__leftCol {
  position : relative;
  box-sizing: border-box;
  z-index: 1;

  &_box {
   display : none;
   }
}

如何简化这两个 classes,以便我们使用常见的 class 除了 z-index 不同

您似乎在使用 SASS/SCSS?

你可以使用@mixin

@mixin col {
  position : relative;
  box-sizing: border-box;

  &_box {
    display : none;
  }
}

.rightCol {
  @include col;

  z-index: 0;
}

.leftCol {
  @include col;

  z-index: 1;
}

或者如果你使用的是 css-in-js 框架,比如 styled-components 或 emotion,你可以这样写:

const colStyles = (zIndex = 0) => css`
  position : relative;
  box-sizing: border-box;
  z-index: ${zIndex};

  &_box {
    display : none;
  }
`;


const StyledDiv = styled.div`
  &__rightCol {
    ${colStyles(0)};
  }

  &__leftCol {
    ${colStyles(1)};
  }
`

更新:减少

.col {
  position : relative;
  box-sizing: border-box;

  &_box {
    display : none;
  }
}

.rightCol {
  .col();
  z-index: 0;
}

.leftCol {
  .col();
  z-index: 1;
}