css - 使用 sass 注册网格状态

标签 css sass gridle

我正在尝试学习 sass 和 gridle 以在我的元素中使用网格系统,但在尝试注册我的网格状态时出现错误:

$gridle-breakpoints: (
  mobile:           ( gutter: 'g-xsmall',   max: 767px ),
  tablet:           ( gutter: 'g-small',    min: 768px ),
  tablet-exact:     ( gutter: 'g-small',    min: 768px,   max: 1199px ),
  desktop:          ( gutter: 'g-medium',   min: 1200px ),
  desktop-exact:    ( gutter: 'g-small',    min: 1200px,  max: 1599px ),
  desktop-lg:       ( gutter: 'g-large',    min: 1600px ),
);

现在有了上面的网格状态,我可以使用以下方法获取属性:

map-get(map-get($gridle-breakpoints, 'desktop'), 'min');

所以当我注册我的网格状态时,我想我可以这样做:

@each $name, $breakpoint in $gridle-breakpoints {
  @if map-has-key($breakpoint, 'min') and map-has-key($breakpoint, 'max') {
    @include gridle_register_state($name, (
        min-width: map-get(map-get($gridle-breakpoints, $name), 'min');
        max-width: map-get(map-get($gridle-breakpoints, $name), 'max');
    ));
  }
}

但是它抛出一个错误:

Module build failed: ModuleBuildError: Module build failed: 
        min-width: map-get(map-get($gridle-breakpoints, $name), 'min');
                                                                    ^
      Unclosed parenthesis

我还尝试将 map 包装在 #{} 中:#{map-get(map-get($gridle-breakpoints, $name), 'min')} 但这会引发相同的错误并且指针位于 #

之前

如何在循环中正确映射这些值,还是必须手动设置它们?

最佳答案

事实证明,each 中的 $breakpoint 只是网格状态的括号部分,所以我可以直接将其传递到寄存器状态:

@each $name, $breakpoint in $gridle-breakpoints {
  @include gridle_register_state($name, $breakpoints);
}

关于css - 使用 sass 注册网格状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47473648/

相关文章:

html - 使用 sass 覆盖 <td> 的 <tr> 样式

java - 在 Android Studio 中添加依赖项时出现问题?

javascript - 动态 Canvas 宽度和高度

jquery - 如何在类型为 ="range"的 CANVAS 中更改颜色?

html - 我的菜单栏子菜单不可见

javascript - 具有内部缩放功能的 css 图片库

reactjs - SCSS - 可以使用react或chrome进行调试吗?

javascript - 在 Scss Functions Angular 中动态添加 $theme-colors 颜色