css - SCSS 扩展嵌套选择器并覆盖嵌套规则集

标签 css sass

好的,所以我有一个带有嵌套选择器的占位符:

%block {
  .title {
    font-size:12px;
  }
}

我想扩展它并添加到 .title 类:

.superblock {
  @extend %block;
  .title {
    font-weight:bold;
  }
}

我想要的答案是:

.superblock .title {
  font-size: 12px;
  font-weight: bold; }

然而,我得到的答案是这样的:

.superblock .title {
  font-size: 12px; }

.superblock .title {
  font-weight: bold; }

我是做错了什么还是这就是它的工作原理?澄清一下,我想合并它。如果我直接在 .superblock 中添加一些东西并像另一个 .superblock2 一样添加,它也扩展了 %block 它们合并没有任何问题。

最佳答案

Sass 没有“合并”重复选择器的功能。在编译 CSS 后,您需要找到另一个实用程序来执行此操作。

@extend 指令不仅仅是一种使用类代替混入的方式(类似于 LESS 风格的混入调用)。当您扩展普通类而不是扩展类时,为什么 @extend 的工作方式变得很清楚:

.block {
  font-size:12px;
}

.foo {
    @extend .block;
    font-weight: bold;
}

输出:

.block, .foo {
  font-size: 12px;
}

.foo {
  font-weight: bold;
}

使用扩展类只会抑制原始类名的发出。

既然您已经了解了为什么 @extend 会这样工作,您还想要 @extend 提供的功能吗? 如果答案是否定的,那么你需要使用mixin:

@mixin block {
    // styles
    .title {
        font-size: 12px;
        @content;
    }
}

.superblock {
    @include block {
        font-weight: bold;
    }
}

输出:

.superblock .title {
  font-size: 12px;
  font-weight: bold;
}

关于css - SCSS 扩展嵌套选择器并覆盖嵌套规则集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16086377/

相关文章:

ruby-on-rails - Sass::SyntaxError on a basic style (RoR Project)

javascript - ZURB Foundation 6 - 媒体查询的变化

jquery - 当位置高度为 :absolute child div is increased 时展开父 div

javascript - 如何判断某些内容是否因为最大高度而被部分隐藏?

jquery - 如何使标题高度相对于(制表符)内容高度?

html - Flexbox:保持元素左右

html - 使用 Bootstrap 绝对居中图像位置

css - 如何更改 jekyll 中代码块的背景颜色?

sass - 当我使用 var 和 rgba 时,CSS 变量在 SCSS 中不起作用

Angular 6 : How to hide radio circle using Angular Material and use NgStyle for checked answer?