$pos: ( t: top, b: bottom, l: left, r: right ); @for $i from 0 through 30 { @each $key, $value in $pos { .m#{$key}-#{$i * 2} { margin: { #{$value}: 2px * $i; } } .p#{$key}-#{$i * 2} { padding: { #{$value}: 2px * $i; } } } .mcol-#{$i * 2} { margin: { top: 2px * $i; bottom: 2px * $i; } } .mrow-#{$i * 2} { margin: { right: 2px * $i; left: 2px * $i; } } .m-#{$i * 2} { margin: 2px * $i; } .pcol-#{$i * 2} { padding: { top: 2px * $i; bottom: 2px * $i; } } .prow-#{$i * 2} { padding: { right: 2px * $i; left: 2px * $i; } } .p-#{$i * 2} { padding: 2px * $i; } } $fjs: ( fs: flex-start, fe: flex-end, sb: space-between, sa: space-around, c: center ); $ais: ( fs: flex-start, fe: flex-end, s: stretch, b: baseline, c: center ); @each $fjsKey, $fjsValue in $fjs { @each $aisKey, $aisValue in $ais { .f-#{$fjsKey}-#{$aisKey} { display: flex; justify-content: $fjsValue; align-items: $aisValue; } } } .f-col { flex-direction: column; } .f-row { flex-direction: row; } @for $i from 1 through 24 { .flex-#{$i} { flex: $i; display: block; min-width: 0; } } .bg-w { background-color: #fff; } .br-10 { border-radius: 10px; }