好的,我有一个带有嵌套选择器的占位符:
%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,它们合并起来没有任何问题。
发布于 2013-04-18 23:15:58
Sass没有“合并”重复选择器的功能。在编译完CSS之后,您需要找到另一个实用程序来完成此任务。
@extend指令不仅仅是使用类代替mixin (类似于LESS样式的mixin调用)的一种方式。当您扩展普通类而不是扩展类时,为什么@extend会这样工作就变得很清楚了:
.block {
font-size:12px;
}
.foo {
@extend .block;
font-weight: bold;
}输出:
.block, .foo {
font-size: 12px;
}
.foo {
font-weight: bold;
}使用扩展类只会抑制原始类名的发出。
既然您已经了解了@extend的工作原理,那么您还想要@extend提供的功能吗?如果答案是否定的,那么你需要使用混入:
@mixin block {
// styles
.title {
font-size: 12px;
@content;
}
}
.superblock {
@include block {
font-weight: bold;
}
}输出:
.superblock .title {
font-size: 12px;
font-weight: bold;
}发布于 2013-04-18 23:19:47
差不多就是这样了。SASS单独生成扩展声明。
而且它没有按选择器对声明进行分组的功能,它并不那么智能。
但是你不需要太担心CSS的整洁性。现代的web服务器提供CSS gzipped,所有的副本都会被很好的压缩。
发布于 2017-04-26 22:08:43
LESS可以做到这一点。但是,您可以这样写:
.superblock {
.title {
.block .title;
}
}不确定它是否也适用于@extend。
https://stackoverflow.com/questions/16086377
复制相似问题