首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SCSS扩展嵌套选择器并覆盖嵌套规则集

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

Stack Overflow用户
提问于 2013-04-18 22:57:22
回答 4查看 50.2K关注 0票数 24

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

代码语言:javascript
复制
%block {
  .title {
    font-size:12px;
  }
}

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

代码语言:javascript
复制
.superblock {
  @extend %block;
  .title {
    font-weight:bold;
  }
}

我想要的答案是:

代码语言:javascript
复制
.superblock .title {
  font-size: 12px;
  font-weight: bold; }

然而,我得到的答案是:

代码语言:javascript
复制
.superblock .title {
  font-size: 12px; }

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

我做错了什么吗?或者这只是它的工作方式?为了澄清,我想合并它。如果我直接在.superblock中添加一些东西,就像添加另一个块一样,它也扩展了% .superblock2,它们合并起来没有任何问题。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-04-18 23:15:58

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

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

代码语言:javascript
复制
.block {
  font-size:12px;
}

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

输出:

代码语言:javascript
复制
.block, .foo {
  font-size: 12px;
}

.foo {
  font-weight: bold;
}

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

既然您已经了解了@extend的工作原理,那么您还想要@extend提供的功能吗?如果答案是否定的,那么你需要使用混入:

代码语言:javascript
复制
@mixin block {
    // styles
    .title {
        font-size: 12px;
        @content;
    }
}

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

输出:

代码语言:javascript
复制
.superblock .title {
  font-size: 12px;
  font-weight: bold;
}
票数 41
EN

Stack Overflow用户

发布于 2013-04-18 23:19:47

差不多就是这样了。SASS单独生成扩展声明。

而且它没有按选择器对声明进行分组的功能,它并不那么智能。

但是你不需要太担心CSS的整洁性。现代的web服务器提供CSS gzipped,所有的副本都会被很好的压缩。

票数 2
EN

Stack Overflow用户

发布于 2017-04-26 22:08:43

LESS可以做到这一点。但是,您可以这样写:

代码语言:javascript
复制
.superblock {
  .title {
    .block .title;
  }
}

不确定它是否也适用于@extend。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16086377

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档