好的,我有一个带有嵌套选择器的占位符:
%block {
.title {
font-size:12px;
}
}
Run Code Online (Sandbox Code Playgroud)
我想扩展它并添加到.title类中:
.superblock {
@extend %block;
.title {
font-weight:bold;
}
}
Run Code Online (Sandbox Code Playgroud)
我想要的答案是这样的:
.superblock .title {
font-size: 12px;
font-weight: bold; }
Run Code Online (Sandbox Code Playgroud)
但是,我得到的答案是这样的:
.superblock .title {
font-size: 12px; }
.superblock .title {
font-weight: bold; }
Run Code Online (Sandbox Code Playgroud)
我做错了什么,或者这是怎么回事?澄清我想合并它.如果我直接在其中.superblock添加内容并添加另一个.superblock2也扩展%block,它们合并没有任何问题.
cim*_*non 32
Sass没有"合并"重复选择器的功能.在编译CSS之后,您需要找到另一个实用程序来执行此操作.
该@extend指令不仅仅是一种使用类代替mixins的方法(类似于LESS风格的mixin调用).@extend当你扩展普通类而不是扩展类时,为什么它的工作方式变得清晰:
.block {
font-size:12px;
}
.foo {
@extend .block;
font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)
输出:
.block, .foo {
font-size: 12px;
}
.foo {
font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)
使用extend类只会抑制原始类名的发出.
现在,您已经看到了,为什么@extend作品它的方式,你还想要什么@extend提供? 如果答案是否定的,那么你需要使用mixin:
@mixin block {
// styles
.title {
font-size: 12px;
@content;
}
}
.superblock {
@include block {
font-weight: bold;
}
}
Run Code Online (Sandbox Code Playgroud)
输出:
.superblock .title {
font-size: 12px;
font-weight: bold;
}
Run Code Online (Sandbox Code Playgroud)