【问题标题】:Switching Gutter Widths At Different Breakpoints Using Susy Next使用 Susy Next 在不同断点处切换装订线宽度
【发布时间】:2014-07-25 17:38:45
【问题描述】:

在我的样式表中,我调用了span,使用 Susy 的 mixin 来控制站点上使用的众多模块的宽度。

我现在需要在给定断点处更改网格间距宽度。而对于像 Foundation 使用的传统网格系统,我所需要的只是这样的媒体查询(假设我在元素上使用了类):

@include breakpoint($medium-up) {
   .column, .columns
   {
      padding: 6rem;
   }
}

我看不出如何使用 Susy 做同样的事情。我所有的网格样式现在都是通过 mixins 提供的,所以我不再有明确的钩子来定位 span。

如何在断点处切换装订线宽度,而无需为我使用过的每个位置添加单独的断点span

从 Susy 的文档看来,答案是添加如下内容:

.example {
    @include span(6);

    @include susy-breakpoint($medium-up, $medium-up-layout) {
       @include span(6);
    }
}

但是在我的所有模块中重复这个似乎有很多重复。

当然,这个问题不仅限于 Susy。使用 Compas 的 Vertical Rhythm 也会出现同样的问题。一旦节奏需要在断点处改变,唯一的选择就是在每个点显式声明断点的改变,使用垂直节奏的功能。

在这两种情况下 - 水平布局和垂直节奏,似乎都需要一个抽象层来允许集中更改跨模块传播并避免重复媒体查询的扩散。

明确地说,我绝不是批评这两个工具包。只是在寻找使用它们的最佳方式。

【问题讨论】:

  • 我在思考如何处理事情时遇到了完全相同的问题!不想重复那么多事情

标签: sass susy-compass susy-sass grid-system susy-next


【解决方案1】:

Susy 从来没有打算规定你的工作方式,所以如果你不喜欢 Susy 处理排水沟的方法,请将 gutters 设置为 null,并像在 Foundation 中一样处理它们。 Susy 无法将其内置,因为我们严格限制您的标记 - 但您可以使用 Susy 轻松构建基础样式的网格来处理数学。如果这是你喜欢的,那就去吧!

.column, .columns {
  padding: 3rem;

  @include breakpoint($medium-up) {
    padding: 6rem;
  }
}

这只是意味着您必须在整个标记中使用column 类。这是一个权衡。

您还可以使用 Susy 简化处理方式。如果排水沟是您唯一需要更改的东西,您可以减少更多的输出:

.example {
  @include span(6);

  @include susy-breakpoint($medium-up, $medium-up-layout) {
    @include gutters();
  }
}

如果您想减少输入,可以将其包装在 mixin 中:

@mixin gutter-change() {
  @include susy-breakpoint($medium-up, $medium-up-layout) {
    @include gutters();
  }
}

.example {
  @include span(6);
  @include gutter-change;
}

根据我所看到的研究,只要您提供 gzip 压缩的资产,输出中的重复媒体查询不会为 CSS 添加相关的加载时间。

【讨论】:

  • 请不要误会我的意思。我喜欢苏西的做法。只是发现很难找到正确的使用方法。我认为问题的很大一部分(就我的理解和其他人的理解而言)是试图将 Susy (和 Sass )在能够传播反应的情况下是动态的想法解耦到之前声明的选择器中的断点。在 OO 语言中,触发器可以改变整个程序的状态是有意义的,而在 Sass 中,情况并非如此。感谢回复。这里很晚了,我会在早上处理这个。
  • 谢谢。这是有道理的。我不想复制 Foundation,只是想了解如何使用 Susy 做同样的事情。我想这一切的模式是将交叉断点功能打包到 mixins 中,并对重复的媒体查询输出进行打击。如此有效地向断点询问排水沟,并让它返回一组查询来操纵跨断点的排水沟。
  • 嗯,用 Susy 复制 Foudantion Susy 应该如何工作的一部分。 Susy 的整个目标(与 Foundation 和其他人不同)是您可以将其分开并按照自己的方式做事,而不是试图适应我的工作方式。您注意到 Sass 的原因在于它是 CSS 的 预处理器——因此它无法访问 DOM。由于 CSS 与 DOM 级联的方式,Sass 不可能可靠地完成您对 OO 编程语言所期望的那种魔法。
  • 我认为我的问题是我已经习惯了函数式和 OO 语言,我发现很难动摇这种心态,即使它在后台以琐碎假设的形式出现。
猜你喜欢
  • 2023-03-03
  • 1970-01-01
  • 2014-09-22
  • 2015-09-04
  • 1970-01-01
  • 1970-01-01
  • 2017-11-30
  • 2014-02-15
  • 2014-05-16
相关资源
最近更新 更多