Last active
April 25, 2017 16:19
-
-
Save seankmchenry/388f80bb4f949b1370f33632596604d3 to your computer and use it in GitHub Desktop.
Flexbox Grid implementation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/** | |
* flexboxgrid.scss | |
*/ | |
/* | |
Variables | |
*/ | |
// breakpoints | |
$break-xs: 35rem; | |
$break-sm: 48rem; | |
$break-md: 62rem; | |
$break-lg: 75rem; | |
$break-xl: 90rem; | |
// gutter size | |
$gutter-width: 1.25rem !default; | |
/* | |
Core | |
*/ | |
.container-fluid, | |
.container { | |
margin-right: auto; | |
margin-left: auto; | |
padding-right: $gutter-width; | |
padding-left: $gutter-width; | |
} | |
.row { | |
box-sizing: border-box; | |
display: flex; | |
flex: 0 1 auto; | |
flex-direction: row; | |
flex-wrap: wrap; | |
margin-right: -$gutter-width; | |
margin-left: -$gutter-width; | |
} | |
.row.reverse { | |
flex-direction: row-reverse; | |
} | |
.col.reverse { | |
flex-direction: column-reverse; | |
} | |
/* | |
X-Small | |
*/ | |
.col-xs, | |
.col-xs-1, | |
.col-xs-2, | |
.col-xs-3, | |
.col-xs-4, | |
.col-xs-5, | |
.col-xs-6, | |
.col-xs-7, | |
.col-xs-8, | |
.col-xs-9, | |
.col-xs-10, | |
.col-xs-11, | |
.col-xs-12 { | |
box-sizing: border-box; | |
flex: 0 0 auto; | |
padding-right: $gutter-width; | |
padding-left: $gutter-width; | |
} | |
.col-xs { | |
flex-grow: 1; | |
flex-basis: 0; | |
max-width: 100%; | |
} | |
@for $i from 1 through 12 { | |
.col-xs-#{$i} { | |
flex-basis: percentage($i/12); | |
max-width: percentage($i/12); | |
} | |
.col-xs-offset-#{$i} { | |
margin-left: percentage($i/12); | |
} | |
} | |
.start-xs { | |
justify-content: flex-start; | |
text-align: start; | |
} | |
.center-xs { | |
justify-content: center; | |
text-align: center; | |
} | |
.end-xs { | |
justify-content: flex-end; | |
text-align: end; | |
} | |
.top-xs { | |
align-items: flex-start; | |
} | |
.middle-xs { | |
align-items: center; | |
} | |
.bottom-xs { | |
align-items: flex-end; | |
} | |
.around-xs { | |
justify-content: space-around; | |
} | |
.between-xs { | |
justify-content: space-between; | |
} | |
.first-xs { | |
order: -1; | |
} | |
.last-xs { | |
order: 1; | |
} | |
/* | |
Small | |
*/ | |
@media only screen and (min-width: $break-sm) { | |
.container { | |
width: $break-sm - (2 * $gutter-width); | |
} | |
.col-sm, | |
.col-sm-1, | |
.col-sm-2, | |
.col-sm-3, | |
.col-sm-4, | |
.col-sm-5, | |
.col-sm-6, | |
.col-sm-7, | |
.col-sm-8, | |
.col-sm-9, | |
.col-sm-10, | |
.col-sm-11, | |
.col-sm-12 { | |
box-sizing: border-box; | |
flex: 0 0 auto; | |
padding-right: $gutter-width; | |
padding-left: $gutter-width; | |
} | |
.col-sm { | |
flex-grow: 1; | |
flex-basis: 0; | |
max-width: 100%; | |
} | |
@for $i from 1 through 12 { | |
.col-sm-#{$i} { | |
flex-basis: percentage($i/12); | |
max-width: percentage($i/12); | |
} | |
.col-sm-offset-#{$i} { | |
margin-left: percentage($i/12); | |
} | |
} | |
.start-sm { | |
justify-content: flex-start; | |
text-align: start; | |
} | |
.center-sm { | |
justify-content: center; | |
text-align: center; | |
} | |
.end-sm { | |
justify-content: flex-end; | |
text-align: end; | |
} | |
.top-sm { | |
align-items: flex-start; | |
} | |
.middle-sm { | |
align-items: center; | |
} | |
.bottom-sm { | |
align-items: flex-end; | |
} | |
.around-sm { | |
justify-content: space-around; | |
} | |
.between-sm { | |
justify-content: space-between; | |
} | |
.first-sm { | |
order: -1; | |
} | |
.last-sm { | |
order: 1; | |
} | |
} | |
/* | |
Medium | |
*/ | |
@media only screen and (min-width: $break-md) { | |
.container { | |
width: $break-md - (2 * $gutter-width); | |
} | |
.col-md, | |
.col-md-1, | |
.col-md-2, | |
.col-md-3, | |
.col-md-4, | |
.col-md-5, | |
.col-md-6, | |
.col-md-7, | |
.col-md-8, | |
.col-md-9, | |
.col-md-10, | |
.col-md-11, | |
.col-md-12 { | |
box-sizing: border-box; | |
flex: 0 0 auto; | |
padding-right: $gutter-width; | |
padding-left: $gutter-width; | |
} | |
.col-md { | |
flex-grow: 1; | |
flex-basis: 0; | |
max-width: 100%; | |
} | |
@for $i from 1 through 12 { | |
.col-md-#{$i} { | |
flex-basis: percentage($i/12); | |
max-width: percentage($i/12); | |
} | |
.col-md-offset-#{$i} { | |
margin-left: percentage($i/12); | |
} | |
} | |
.start-md { | |
justify-content: flex-start; | |
text-align: start; | |
} | |
.center-md { | |
justify-content: center; | |
text-align: center; | |
} | |
.end-md { | |
justify-content: flex-end; | |
text-align: end; | |
} | |
.top-md { | |
align-items: flex-start; | |
} | |
.middle-md { | |
align-items: center; | |
} | |
.bottom-md { | |
align-items: flex-end; | |
} | |
.around-md { | |
justify-content: space-around; | |
} | |
.between-md { | |
justify-content: space-between; | |
} | |
.first-md { | |
order: -1; | |
} | |
.last-md { | |
order: 1; | |
} | |
} | |
/* | |
Large | |
*/ | |
@media only screen and (min-width: $break-lg) { | |
.container { | |
width: $break-lg - (2 * $gutter-width); | |
} | |
.col-lg, | |
.col-lg-1, | |
.col-lg-2, | |
.col-lg-3, | |
.col-lg-4, | |
.col-lg-5, | |
.col-lg-6, | |
.col-lg-7, | |
.col-lg-8, | |
.col-lg-9, | |
.col-lg-10, | |
.col-lg-11, | |
.col-lg-12 { | |
box-sizing: border-box; | |
flex: 0 0 auto; | |
padding-right: $gutter-width; | |
padding-left: $gutter-width; | |
} | |
.col-lg { | |
flex-grow: 1; | |
flex-basis: 0; | |
max-width: 100%; | |
} | |
@for $i from 1 through 12 { | |
.col-lg-#{$i} { | |
flex-basis: percentage($i/12); | |
max-width: percentage($i/12); | |
} | |
.col-lg-offset-#{$i} { | |
margin-left: percentage($i/12); | |
} | |
} | |
.start-lg { | |
justify-content: flex-start; | |
text-align: start; | |
} | |
.center-lg { | |
justify-content: center; | |
text-align: center; | |
} | |
.end-lg { | |
justify-content: flex-end; | |
text-align: end; | |
} | |
.top-lg { | |
align-items: flex-start; | |
} | |
.middle-lg { | |
align-items: center; | |
} | |
.bottom-lg { | |
align-items: flex-end; | |
} | |
.around-lg { | |
justify-content: space-around; | |
} | |
.between-lg { | |
justify-content: space-between; | |
} | |
.first-lg { | |
order: -1; | |
} | |
.last-lg { | |
order: 1; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment