【问题标题】:Susy 2.1.3 issue regarding layout change on breakpointSusy 2.1.3 关于断点布局更改的问题
【发布时间】:2015-03-03 17:41:30
【问题描述】:

帮帮我,你们这些时髦的苏西,我快要崩溃了!我正在尝试为我的项目制作最有效的布局,但我遇到了一些我无法用 Susy/breakpoint 解决的问题。

我希望布局列在断点处更改,而不必更改 div 的所有单个跨度(因为这样会有许多不同的跨度宽度。而不是只有 1 个和更改 3 或 4 个不同的列布局)。

目前,我能够使其工作的唯一方法是更改​​ div 的跨度并保持列不变,但我希望 div 始终保持相同的大小,然后根据具体情况放置到位还有多少列要填充。

我认为这正是我编写@include 的方式。我尝试在断点内进行容器/布局,而不是使用布局,但没有成功。 我知道这可能是一个我没有看到的简单修复。

编辑:我还注意到,无论我如何更改,div 总是采用默认的 $susy 映射,并且不会在断点处更改它。

SCSS:

@import 'susy';
@import 'breakpoint';

$layout1: layout(12 .125 split fluid center);
$layout2: layout(16 .125 split fluid center);
$layout3: layout(24 .125 split fluid center);

.container {
  @include container;
  @include with-layout($layout1);
  background: orange;

    @include breakpoint(600px) {
      @include with-layout($layout2);
      background: red;
    }

    @include breakpoint(1000px) {
      @include with-layout($layout3);
      background: blue;
    }

}

.testbox {
  @include span(1);  
}

html:

<div class="container">

  <div class="testbox">hello</div>
  <div class="testbox">hello</div>
  <div class="testbox">hello</div>
  <div class="testbox">hello</div>
  <div class="testbox">hello</div>
  <div class="testbox">hello</div>
  <div class="testbox">hello</div>
  <div class="testbox">hello</div>

</div>

【问题讨论】:

  • 不,不幸的是,这不是问题所在。我可以将 layout(12/16/24) 放在那里并替换变量而不做任何更改。我认为以这种方式展示可以描述我最努力的事情。
  • 是的,如果您查看 mixins 的来源,就是问题。 with-layout mixin 所做的只是设置变量。
  • 即使我使用零变量但我无法实现其子级可以识别的列更改,但是我可以毫无问题地在断点处更改颜色和跨度。我只是不知道什么命令实际上允许更改里面的内容的列。我可以将 12 列布局更改为 24,但内部的 div 仍会将其视为 12 列。如果你能提供一个我应该如何做的例子,我将不胜感激,因为我觉得我现在是盲人。
  • 让它工作的方法是放在 div span(1 of 6) 然后有断点并说 span(1 of 12)。当我说 span(1) 时,我注意到在 css 内部,它给了它一个 % 值宽度,它不会随断点而改变,这就是导致问题的原因。出于某种原因,我认为跨度会随着断点及其新父级的布局而改变。有没有另一种方法可以做到这一点而不必添加断点跨度。

标签: html grid sass susy breakpoint-sass


【解决方案1】:

with-layout 仅更改用于嵌套在其中的 Susy mixins/函数的设置

@include with-layout($layout2) {
  // code nested here will use the $layout2 settings
}

在对with-layout 的任何调用中都没有嵌套任何内容 - 因此没有任何更改。这正是@cimmonon 试图在 cmets 中解释的内容。同样,@media 只会更改直接嵌套在其中的内容——因此您的颜色可以正常更改,但您的跨度不会。颜色实际上是嵌套的,跨度不是。

因为 Sass 是经过预处理的,所以 span(1) 不能有多个输出,除非它被多次调用。现在你调用它一次,所以它有一个输出。如果你在不同的布局上下文中多次调用它,你可以获得不同的输出。

// This will give you different spans at different breakpoints:
@include breakpoint(600px) {
  @include with-layout($layout2) {
    @include span(1);
    background: red;
  }
}

// you can also use the susy-breakpoint shortcut:
@include susy-breakpoint(1000px, $layout3) {
  @include span(1);
  background: blue;
}

【讨论】:

  • 是的,出于某种原因,我一直认为 span 是一个设定值,并尝试了所有可能的方法,但没有创建断点 span。再次感谢大家,感谢 eric 为 susy 所做的所有工作。这是一个了不起的框架,希望今年当我成为大师时会为它贡献一些很酷的东西:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-07-16
  • 1970-01-01
  • 2020-10-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-02-16
相关资源
最近更新 更多