css - 使用 :extend() in LESS with pseudo-elements

标签 css less pseudo-element

我想编写一个具有颜色变化和字体图标变化的简单警报组件。这些图标使用 :before 进行编码。我可以用 vanilla CSS 写得很好,但我想用尽可能紧凑的 LESS 来写,我坚持使用我很少使用的 :extend() :(

.base-alert {
    color: red;
    ...
    &:before {
        content: 'base-icon-unicode';
        ...
    }
}

在 vanilla CSS 中,变体类的代码如下:

.alert-warning {
    color: red;
}
.alert-warning:before {
    content "warning-icon-unicode";
}

但是 HTML 应该是 class="base-alert alert-warning"。我想在 LESS 中编写变体类,使用 :extend() 所以在 HTML 中我只会写 class="alert-warning"class= “警报成功” 等等。像这样的东西:

.alert-warning {
    &:extend(.base-alert);
    color: orange;
    &:before {
       content "warning-icon-unicode";
    }
}

但是 :before 不再适用。

最佳答案

您似乎在寻找以下内容:

.alert-warning:extend(.base-alert all) {
  color: orange;

  &:before {
    content: "warning-icon-unicode";
  }
}

这基本上只是使用 all keyword.base-alert 扩展了 .alert-warning .然后伪元素的 content 值更改为 warning-icon-unicode 并且颜色更改为橙​​色。


根据您关于扩展到多个类的评论,我想您可以使用以下内容,这实际上只是选择器的别名:

.alert-warning, .alert-warning2 {
  &:extend(.base-alert all);

  color: orange;

  &:before {
    content: "warning-icon-unicode";
  }
}

或者,根据您的喜好,您也可以使用以下方法,这将产生相同的预期结果。

.alert-warning:extend(.base-alert all),
.alert-warning2:extend(.base-alert all) {
  color: orange;

  &:before {
    content: "warning-icon-unicode";
  }
}

..这也同样有效:

.alert-warning:extend(.base-alert all) {
  color: orange;

  &:before {
    content: "warning-icon-unicode";
  }
}

.alert-warning2:extend(.alert-warning all) {}

关于css - 使用 :extend() in LESS with pseudo-elements,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29241231/

相关文章:

javascript - jQuery .css 主体不透明度

css - bootstrap如何继承font-size-small变量?

css - 使用 LESS 的媒体查询中嵌套混合的可能错误

不同继承之前/之后的 CSS 伪

css - 为什么我需要 "fuse"两个对象才能使用 "display: flex;"CSS?

css - 如何在不同宽度的列内制作相同高度的 Bulma 卡片图像?

html - 如何使边框半径框中的文本居中

css - 使用 LESS CSS 在父元素中选择元素

html - 定位:after-pseudo behind text in a link

CSS - 为图像 mask 使用伪元素