首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Singularitygs v1.4中定义多个格网

在Singularitygs v1.4中定义多个格网
EN

Stack Overflow用户
提问于 2014-10-02 02:14:09
回答 1查看 187关注 0票数 0

我开始将一个网站从奇点1.1.2升级到1.4.0,当涉及到在同一样式表中使用多个网格时,我立即遇到了麻烦。我在这个网站上有五个不同的网格。以前,我可以为每个网格和间隔设置变量,如下所示…

代码语言:javascript
复制
$copy-grids: 2;
$copy-grids: add-grid(4 at $breakpoint-xs-min, $copy-grids);
$copy-grids: add-grid(6 at $breakpoint-l-min, $copy-grids);
$copy-gutters: $gutter-width;

$front-grids: 1;
$front-grids: add-grid(2 at $breakpoint-2up-min, $front-grids);
$front-grids: add-grid(3 at $breakpoint-3up-min, $front-grids);
$front-grids: add-grid(4 at $breakpoint-4up-min, $front-grids);
$front-gutters: breakpoint-to-base-em($front-gutter-width);

...

然后,我可以使用奇点的layout()函数将这些变量传递给自定义的混合,如下所示……

代码语言:javascript
复制
// Mixins for the main content body copy.
@mixin copy-layout {
  @include layout($copy-grids, $copy-gutters) {
    // All the things!
    @content;
  }
}
@mixin copy-grid-span($span, $location) {
  @include copy-layout {
    @include grid-span($span, $location);
  }
}

// Mixins for the front page.
@mixin front-layout {
  @include layout($front-grids, $front-gutters) {
    $gutter-styles: 'split' 'fixed';
    // All the things!
    @content;
  }
}
@mixin front-grid-span($span, $location) {
  @include front-layout {
    @include grid-span($span, $location);
  }
}

...

这让我可以使用我的自定义混合来代替标准的grid-span()混合来轻松地实现我定义的任何网格。例如:

代码语言:javascript
复制
#block-bean-front-page-message {
  margin-bottom: $front-gutters;
  @include breakpoint-1up() {
    width: 100%;
    padding: 0 $front-gutters/2;
  }
  @include breakpoint-2up-to-4up() {
    @include front-grid-span(1, 2);
  }
  @include breakpoint-4up(true) {
    @include front-grid-span(3, 2);
  }
}

问题是,在奇点v1.4中,栅格和间距设置不再保存到正常的sass变量。相反,它们将作为键值保存在全局$Singularity-Settings映射中。用于这些值的键是在add-grid()add-gutter()add-gutter-style()混合中硬编码的,它们都不接受自定义变量名。这似乎有效地阻止了我定义多个网格。因此,虽然layout()混合仍然存在,我不再有变量,我可以传递到它为我的网格和间隔设置,打破了我的自定义布局包装器混合。

我已经把这个作为issue on Github发布了,我知道一个更永久的修复可能正在进行中。但同时,我希望有一个变通的方法,我可以使用当前版本的Singularity来完成多个网格。

EN

回答 1

Stack Overflow用户

发布于 2014-10-04 00:29:46

看起来我可以通过重写add-grid(),add-gutter()和add-gutter-style()混合来达到我想要的效果,如下所示:

代码语言:javascript
复制
@mixin add-grid($grid-definition, $grid-key: 'grids') {
  $Grid-Map: ();
  @if sgs-has($grid-key) {
    $Grid-Map: sgs-get($grid-key);
  }
  @else {
    $New-Map: sgs-set($grid-key, $Grid-Map)
  }
  $Add-Grid: add-grid($grid-definition, $Grid-Map);
  $HOLDER: sgs-set($grid-key, $Add-Grid);
}

@mixin add-gutter($gutter-definition, $gutter-key: 'gutters') {
  $Gutter-Map: ();
  @if sgs-has($gutter-key) {
    $Gutter-Map: sgs-get($gutter-key);
  }
  @else {
    $New-Map: sgs-set($gutter-key, $Gutter-Map)
  }
  $Add-Gutter: add-gutter($gutter-definition, $Gutter-Map);
  $HOLDER: sgs-set($gutter-key, $Add-Gutter);
}

@mixin add-gutter-style($gutter-style-definition, $gutter-style-key: 'gutter styles') {
  $Gutter-Style-Map: ();
  @if sgs-has($gutter-style-key) {
    $Gutter-Style-Map: sgs-get($gutter-style-key);
  }
  @else {
    $New-Map: sgs-set($gutter-style-key, $Gutter-Style-Map)
  }
  $Add-Gutter-Style: add-gutter-style($gutter-style-definition, $Gutter-Style-Map);
  $HOLDER: sgs-set($gutter-style-key, $Add-Gutter-Style);
}

然后我可以像这样定义我的网格...

代码语言:javascript
复制
@include add-grid(2, 'copy grids');
@include add-grid(4 at $breakpoint-xs-min, 'copy grids');
@include add-grid(6 at $breakpoint-l-min, 'copy grids');
$copy-grids: sgs-get('copy grids');
@include add-gutter($gutter-width, 'copy gutters');
$copy-gutters: sgs-get('copy gutters');

@include add-grid(2, 'front grids');
@include add-grid(2 at $breakpoint-2up-min, 'front grids');
@include add-grid(3 at $breakpoint-3up-min, 'front grids');
@include add-grid(4 at $breakpoint-4up-min, 'front grids');
$front-grids: sgs-get('front grids');
@include add-gutter($front-gutter-width-em, 'front gutters');
$front-gutters: sgs-get('front gutters');
$front-gutter-styles: 'split' 'fixed';

...giving me变量,我可以将它们传递给布局函数。现在一切似乎都在正常工作,除了间隔样式,它似乎对输出没有任何影响,但这是另一个问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26147855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档