用 Susy 解决您的问题
Susy 允许覆盖列数。许多 Susy mixin 都允许这样做——每个接受 $context 参数的 mixin。
但覆盖上下文的最佳方法是使用 at-breakpoint 混合:
// Defining the breakpoints
$mobile-to-medium: 400px;
$medium-to-large: 800px;
// Defining columns
$columns-small: 1;
$columns-medium: 8;
$columns-large: 12;
// Starting with a one-column mobile grid
$total-columns: $columns-small;
// Global styles go here
// Mobile-only styles
@include at-breakpoint($total-columns $mobile-to-medium) {
// ...
}
// Medium-only styles go here
@include at-breakpoint($mobile-to-medium $columns-medium $medium-to-large) {
.item{
@include span-columns(3);
@include nth-omega(2n); } }
// Large-only styles go here
@include at-breakpoint($medium-to-large $columns-large) {
.item{
@include span-columns(4);
@include nth-omega(3n); } }
Omega 假设分层响应:移动样式适用于所有宽度; medium 样式适用于中等和大宽度,大样式适用于大宽度。
上面的方法不是分层的:移动样式只应用于移动宽度等。这样你就不用担心欧米茄应用到不应该去的地方。
要使用 Omega 分层方法,只需删除 at-breakpoint 调用中的第三个元素(最大宽度)。但是你必须申请@include remove-nth-omega():
// Defining the breakpoints
$mobile-to-medium: 400px;
$medium-to-large: 800px;
// Defining columns
$columns-small: 1;
$columns-medium: 8;
$columns-large: 12;
// Starting with a one-column mobile grid
$total-columns: $columns-small;
// Global styles go here
// Medium and large styles go here
@include at-breakpoint($mobile-to-medium $columns-medium) {
.item{
@include span-columns(3);
@include nth-omega(2n); } }
// Large-only styles go here
@include at-breakpoint($medium-to-large $columns-large) {
.item{
@include span-columns(4);
@include remove-nth-omega(2n);
@include nth-omega(3n); } }
无 omega 方法概述
有些 SASS 网格系统不使用“omega”参数(不要与 Drupal 的 Omega 主题混淆),该参数必须应用于每行中的最后一项。相反,除了列宽之外,您还需要提供每个元素的位置(项目从哪一列开始)。
为了实现这一点,使用了另一个 CSS 定位 approach,称为“隔离”。第一个使用这种方法的框架是Zen Grids。
Susy 也通过其isolate 和isolate-grid mixins 支持此方法。
如果不提及最新和最先进的 SASS 网格框架 Singularity,本概述将是不完整的。它支持这两种定位方法,并且可以扩展以在未来支持更多(例如 flexbox,它最近已成为 Compass 的 added)。