@import 'class'; $picnic-grid-gutter: $picnic-separation !default; $picnic-grid-gutter-vertical: $picnic-grid-gutter !default; $picnic-grid-gutter-horizontal: $picnic-grid-gutter !default; $picnic-grid-sizes: 500 600 700 800 900 1000 1100 1200 1300 1400 1500 1600 1700 1800 1900 2000 !default; $picnic-grid-children: $picnic-grid-sizes !default; $picnic-grid-off: $picnic-grid-sizes !default; $picnic-grid-count: one two three four five six seven eight nine ten eleven twelve !default; $picnic-grid-count-sizes: ( one: 100%, two: 50%, three: 33.33333%, four: 25%, five: 20%, six: 16.66666%, seven: 14.28571%, eight: 12.5%, nine: 11.11111%, ten: 10%, eleven: 9.09091%, twelve: 8.33333% ); $picnic-grid-part: full half third two-third fourth three-fourth fifth two-fifth three-fifth four-fifth sixth !default; $picnic-grid-part-sizes: ( full: 100%, half: 50%, third: 33.33333%, two-third: 66.66666%, fourth: 25%, three-fourth: 75%, fifth: 20%, two-fifth: 40%, three-fifth: 60%, four-fifth: 80%, sixth: 16.66666% ); $picnic-grid-offpart: none half third two-third fourth three-fourth fifth two-fifth three-fifth four-fifth sixth !default; $picnic-grid-offpart-sizes: ( half: 50%, third: 33.33333%, two-third: 66.66666%, fourth: 25%, three-fourth: 75%, fifth: 20%, two-fifth: 40%, three-fifth: 60%, four-fifth: 80%, sixth: 16.66666%, none: 0 ); @function in($list, $var) { @return (false != index($list, $var)); } .flex { display: -ms-flexbox; display: flex; margin-left: -$picnic-grid-gutter-horizontal; width: calc(100% + #{$picnic-grid-gutter-horizontal}); flex-wrap: wrap; transition: all .3s ease; } .flex > * { box-sizing: border-box; flex: 1 1 auto; /* Default for IE10 bug */ padding-left: $picnic-grid-gutter-horizontal; padding-bottom: $picnic-grid-gutter-vertical; } .flex { &[class*="one"], &[class*="two"], &[class*="three"], &[class*="four"], &[class*="five"], &[class*="six"], &[class*="seven"], &[class*="eight"], &[class*="nine"], &[class*="ten"], &[class*="eleven"], &[class*="twelve"] { > * { flex-grow: 0; } } } .flex.grow > * { flex-grow: 1; } .center { justify-content: center; } @each $count in $picnic-grid-count { .#{$count} > * { width: map-get($picnic-grid-count-sizes, $count); } } @each $i in $picnic-grid-sizes { @media all and (min-width: unquote($i + 'px')) { @each $count in $picnic-grid-count { .#{$count}-#{$i} > * { width: map-get($picnic-grid-count-sizes, $count); } } } } // Children sizing @each $part in $picnic-grid-part { .#{$part} { width: map-get($picnic-grid-part-sizes, $part); } } .none { display: none; } @each $i in $picnic-grid-sizes { @media all and (min-width: unquote($i + 'px')) { @each $part in $picnic-grid-part { .#{$part}-#{$i} { width: map-get($picnic-grid-part-sizes, $part); display: block; } } } } @each $i in $picnic-grid-children { @media all and (min-width: unquote($i + 'px')) { .none-#{$i} { display: none; } } } @each $part in $picnic-grid-offpart { .off-#{$part} { margin-left: map-get($picnic-grid-offpart-sizes, $part); } } @each $i in $picnic-grid-sizes { @media all and (min-width: unquote($i + 'px')) { @each $part in $picnic-grid-offpart { .off-#{$part}-#{$i} { margin-left: map-get($picnic-grid-offpart-sizes, $part); } } } }