【发布时间】:2018-12-27 17:17:21
【问题描述】:
我正在尝试为以下代码实现排水沟(https://www.sassmeister.com/gist/eca78ee1435202c7e7dcaecc57c75bd5):
// ----
// Sass (vundefined)
// Compass (vundefined)
// dart-sass (v1.6.2)
// ----
//Variable Declarations
$__grid--columns:12;
$__grid--breakpoints: (
'xxxsmall': 375px,
'xxsmall': 480px,
'xsmall': 667px,
'small': 768px,
'medium': 960px,
'large': 1024px,
'xlarge': 1200px,
'xxlarge': 1400px,
'xxxlarge': 1600px,
);
$__grid--gutters: (
'small': 30px,
'medium': 30px,
'large': 30px
);
$__grid--cell-containers: (
'small': 1200px,
'medium': 1400px,
'large': 1600px,
'full': 100%
);
//Mixins for Grid
// @mixin createGutters() {
// .element {
// @if map-has-key($__grid--gutters, '') {
// content: 'Key Found';
// } @else {
// content: 'Key Not Found';
// }
// }
// }
@mixin createCells() {
@each $key, $value in $__grid--breakpoints {
@media screen and (min-width:$value){
@for $i from 1 through $__grid--columns {
&.#{$key}-#{$i}{
@if map-has-key($__grid--gutters, $key) {
margin-left:map-get($__grid--gutters, $key);
}
width:((100% / $__grid--columns) * $i);
}
}
}
}
}
//Spit out the cells
.row {
display:flex;
flex-wrap:wrap;
}
.cell {
// @include createGutters;
@include createCells;
}
//Styles not needed for grid
// * {
// box-sizing:border-box;
// }
// .color {
// padding:10px;
// background-color:salmon;
// }
如您所见,我有一张排水沟的 sass 地图。我试图让这个尽可能简单。我不确定我是否应该使用 each 循环,或者 map-get() 函数,或者其他的东西。我也想在左边有边距。我必须考虑,如果它们的列太多,它们将掉到下一行。
所以基本上如果我将第一个元素的边距设置为 0,并且我有 4 列可以放入容器中,那么从第 5 个开始的项目将下降到下一行。问题是第 5 个项目的边距仍然存在。
这是我的意思的表示:
item---item---item---item
---item---item---item---item
---item---item---item---item
那么有没有办法:
- 以简洁的方式实现我的 sass 映射?
- 添加支持如果项目中断到下一行以获取边距
- 执行此过程的更好方法?如果是这样,请随时 fork sassmeister 代码。
【问题讨论】: