即使指南显示 4 列,Bourbon Neat 仍然使用 12 列

Bourbon Neat still using 12 columns even when guides show 4 columns

我正在构建的静态 Octopress 站点中使用 Bourbon 和 Neat。除了打开指南 ($visual-grid: true;) 之外,我使用的 _grid-settings.scss 文件没有任何变化。在我的 screen.scss 中,我在 Bourbon 之后、Neat 之前加载网格设置:

@import "bourbon/bourbon";
@import "grid-settings";
@import "neat/neat";

由于我使用的是默认网格设置,所以小屏幕应该只有 4 列宽。

$phone-portrait: new-breakpoint(max-width $tiny-screen 4); // 450px

当我在小于 450 像素的屏幕上查看网站时,视觉网格显示 4 列,但布局仍使用 12 列。我有几个地方在布局中使用 4 列 div,在移动设备上它们应该是全宽的,因为页面只有 4 列,但它们只有页面宽度的三分之一。我可以通过将 @include span-columns(4) 替换为 @include span-columns(12) 来验证移动设备仍在使用 12 列。 12 列 div 是唯一在移动设备上全宽的 div。

为什么 Neat 不为指南和我的布局使用相同数量的列?

我认为您的代码中缺少一个逗号,认为您需要:

$phone-portrait: new-breakpoint(max-width $tiny-screen, 4); // 450px

希望对您有所帮助

事实证明,问题是由于在更改列数 ($phone-portrait: new-breakpoint(max-width $tiny-screen 4);) 的断点内的 div 上没有使用 @include span-columns(4)。起初这似乎很奇怪,直到我明白到底发生了什么。当我将 div 设置为跨越 4 列时,neat 获取列数并 div 将它们除以当前断点处的总列数。在我的例子中,这将是 0.333,然后用作 div 的宽度百分比。问题是,这永远不会改变,即使后来改变的列总数做了一个断点。我的 div 总是 33.3% 宽。我需要做的是在断点的媒体选择器中重复 span-columns 包含,如下所示:

$phone-portrait: new-breakpoint(max-width $tiny-screen 4);

.my-div {
  @include span-columns(4);
}

@include media($phone-portrait) { 
    .my-div {
      @include span-columns(4);
    }
}

这确保我的 div 将在 $phone-portrait 断点上 100% 宽。