Sass 队列中的这个未解决的问题似乎暗示将参数传递给@content
还不是一个功能,但Susy 2似乎能够做到这一点。追踪它是如何完成的有点像兔子洞,我还没有弄清楚。也许有人可以通过一个简单的例子来阐明?我想创建一个自定义 mixin,它将继承从susy-breakpoint()
使用自定义地图传递的布局。
示例:susy-breakpoint()
在全局 Sass 映射中定义 4 列布局,当在's中指定跨度为 4 时,将返回 100% 的宽度@content
。susy-breakpoint()
当 8 cols 的自定义布局通过参数直接传递给 to$layout
时,嵌套的span()
mixin 会选择新的布局。但是自定义嵌套的 mixin 不会选择新的布局。为什么?
@import 'susy';
$susy: (
columns: 4,
);
@mixin inherit-layout($layout: 4) {
columns: $layout;
}
@include susy-breakpoint(30em) {
// nested code uses an 4-column grid from global map
.global-cols {
@include span(4);
@include inherit-layout();
}
}
@include susy-breakpoint(48em, $layout: 8) {
// nested code uses an 8-column grid from $layout
.inherited-cols {
@include span(4);
@include inherit-layout();
}
}
编译的CSS:
@media (min-width: 30em) {
.global-cols {
width: 100%;
float: left;
margin-left: 0;
margin-right: 0;
columns: 4;
}
}
@media (min-width: 48em) {
.inherited-cols {
width: 48.71795%;
float: left;
margin-right: 2.5641%;
columns: 4;
}
}
更新:
我发现,将inherit-value()
mixin 的默认变量设置为现有$susy
地图上 columns 键的值允许 mixin 获取上下文。但为什么?为什么它不适用于不同的地图或外部susy-breakpoint()
?