我想我一定遗漏了一些关于 susy 工作原理的基本知识,而且文档中的示例太少,无法理解它是如何工作的。
我想在不同的断点有不同的布局。我可以做到这一点,但我希望我的元素跨越不同数量的列,具体取决于触发的断点。因此,如果我有一个通用的移动样式表(“移动优先”),例如:
.wrapper{
.element1{
@include span-columns(4);
}
.element2{
@include span-columns(2 omega);
}
}
但是,一旦宽度更改为我的“平板电脑”并更改为 8 列布局,我希望能够将其更改为:
@include at-breakpoint($tablet-break $tablet-layout){
.wrapper{
@include set-container-width;
.element1{
@include span-columns(5);
}
.element2{
@include span-columns(3 omega);
}
}
}
看起来这不仅没有“覆盖”移动设置,而且在萤火虫检查后,这些元素似乎与我的新平板电脑列不匹配。我认为它仍然使用 6 列布局。添加 @include set-container-width 似乎并不能解决问题;但是,如果我注释掉移动布局,它就可以工作。所以几乎就好像这些包含语句不会覆盖,所以我想我不明白 susy 是如何工作的。这是一个显示元素与布局不匹配的萤火虫示例:
(此外,我不确定任何 SUSY 最佳实践(嵌套深度不超过 4 层除外)。我可以使用嵌套的 @at-breakpoint 语句为我的所有更改定义我所有的 sass,或者我可以定义我的默认值( mobile) css,然后创建一个单独的 sass 块,全部嵌套在断点内。我不知道这是否会导致问题。)
更新
看来,如果我在原始(移动)声明之后包含断点包含,它似乎可以工作。虽然它似乎确实需要代码重复:
.element1{
@include span-columns(2 omega);
text-indent: -1em;
text-align: center;
@include at-breakpoint($tablet-break $tablet-layout){
@include span-columns(3 omega);
text-indent: 0;
text-align: left;
}
@include at-breakpoint($desktop-break $desktop-layout){
@include span-columns(3 omega);
text-indent: 0;
text-align: left;
}
}