Skip to content

Instantly share code, notes, and snippets.

@webdevian
Created March 8, 2017 12:38
Show Gist options
  • Select an option

  • Save webdevian/5b377536265b6f8c95255451c032edf3 to your computer and use it in GitHub Desktop.

Select an option

Save webdevian/5b377536265b6f8c95255451c032edf3 to your computer and use it in GitHub Desktop.
Foundation 6 responsive columns mixin
// Make a responsive column element, with width and padding values for each breakpoint
@mixin grid-columns(
// {Integer} Small columns (i.e 6 = half (6/12))
$small: $grid-column-count,
// {Integer} Medium columns
$medium: false,
// {Integer} Large columns
$large: false,
// {Boolean} Clear left if this column is the "first in the row"
// i.e, if we have n columns per row, every nth column with have
// clear:left to stop elements of different heights breaking the row
$clear: false,
// {Boolean} include left padding
$left-padding: true,
// {Boolean} include right padding
$right-padding: true
){
width: percentage($small / $grid-column-count);
float: left;
@if($clear) {
$n: floor(12 / $small);
$only: '';
@if($medium) {
$only: 'only';
}
@if($n > 1) {
@include breakpoint(small #{$only}) {
&:nth-of-type(#{$n}n-#{$n - 1}) {
clear: left;
}
}
}
}
$padding: rem-calc(map-get($grid-column-gutter, 'small')) / 2;
@if($right-padding) {
padding-right: $padding;
}
@if($left-padding) {
padding-left: $padding;
}
@include breakpoint(medium) {
@if($medium) {
width: percentage($medium / $grid-column-count);
}
$medium-padding: rem-calc(map-get($grid-column-gutter, 'medium')) / 2;
@if($right-padding) {
padding-right: $medium-padding;
}
@if($left-padding) {
padding-left: $medium-padding;
}
}
@if($clear and $medium) {
$n: floor(12 / $medium);
$only: '';
@if($medium) {
$only: 'only';
}
@if($n > 1) {
@include breakpoint(medium #{$only}) {
&:nth-of-type(#{$n}n-#{$n - 1}) {
clear: left;
}
}
}
}
@include breakpoint(large) {
@if($large) {
width: percentage($large / $grid-column-count);
}
$large-padding: rem-calc(map-get($grid-column-gutter, 'large')) / 2;
@if($right-padding) {
padding-right: $large-padding;
}
@if($left-padding) {
padding-left: $large-padding;
}
}
@if($clear and $large) {
$n: floor(12 / $large);
@if($n > 1) {
@include breakpoint(large) {
&:nth-of-type(#{$n}n-#{$n - 1}) {
clear: left;
}
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment