mirror of
https://github.com/openfoodfoundation/openfoodnetwork
synced 2026-01-25 20:46:48 +00:00
215 lines
6.1 KiB
SCSS
Executable File
215 lines
6.1 KiB
SCSS
Executable File
//
|
|
// @version
|
|
// 4.3.0
|
|
//
|
|
// @title
|
|
// Grid
|
|
//
|
|
// @description
|
|
// With a default "small-#" grid, a 640-1024px "medium-#" grid, and a 1024+ "large-#" grid, we've got you covered for any layout you can think of.
|
|
//
|
|
|
|
//
|
|
// Grid Variables
|
|
//
|
|
$include-html-grid-classes: true !default;
|
|
$row-width: em-calc(1000) !default;
|
|
$column-gutter: em-calc(30) !default;
|
|
$total-columns: 12 !default;
|
|
|
|
//
|
|
// Grid Calc Function
|
|
//
|
|
@function gridCalc($colNumber, $totalColumns) {
|
|
@return percentage(($colNumber / $totalColumns));
|
|
}
|
|
|
|
// Right and Left "auto" for grid
|
|
%right-auto { #{$opposite-direction}: auto; }
|
|
%left-auto { #{$default-float}: auto; }
|
|
|
|
//
|
|
// Grid Mixins
|
|
//
|
|
|
|
// Create default, nested, and collapsed rows
|
|
@mixin grid-row($behavior: false) {
|
|
|
|
// use @include grid-row(nest); to include a nested row
|
|
@if $behavior == nest {
|
|
margin-#{$default-float}: -($column-gutter/2);
|
|
margin-#{$opposite-direction}: -($column-gutter/2);
|
|
max-width: none;
|
|
width: auto;
|
|
}
|
|
|
|
// use @include grid-row(collapse); to collapsed a container row margins
|
|
@else if $behavior == collapse {
|
|
margin-#{$default-float}: 0;
|
|
margin-#{$opposite-direction}: 0;
|
|
max-width: $row-width;
|
|
width: 100%;
|
|
}
|
|
|
|
// use @include grid-row(nest-collapse); to collapse outer margins on a nested row
|
|
@else if $behavior == nest-collapse {
|
|
margin-#{$default-float}: 0;
|
|
margin-#{$opposite-direction}: 0;
|
|
max-width: none;
|
|
width: auto;
|
|
}
|
|
|
|
// use @include grid-row; to use a container row
|
|
@else {
|
|
margin-#{$default-float}: auto;
|
|
margin-#{$opposite-direction}: auto;
|
|
margin-top: 0;
|
|
margin-bottom: 0;
|
|
max-width: $row-width;
|
|
width: 100%;
|
|
}
|
|
|
|
@include clearfix;
|
|
}
|
|
|
|
|
|
// For creating columns - @include these inside a media query to control small vs. large grid layouts
|
|
@mixin grid-column($columns:false, $last-column:false, $center:false, $offset:false, $push:false, $pull:false, $collapse:false, $float:true, $include-position-relative: false) {
|
|
|
|
// If collapsed, get rid of gutter padding
|
|
@if $collapse {
|
|
padding-left: 0;
|
|
padding-right: 0;
|
|
}
|
|
|
|
// Gutter padding whenever a column isn't set to collapse
|
|
// (use $collapse:null to do nothing)
|
|
@else if $collapse == false {
|
|
padding-left: $column-gutter / 2;
|
|
padding-right: $column-gutter / 2;
|
|
}
|
|
|
|
// If a column number is given, calculate width
|
|
@if $columns {
|
|
width: gridCalc($columns, $total-columns);
|
|
|
|
// If last column, float naturally instead of to the right
|
|
@if $last-column { float: $opposite-direction; }
|
|
}
|
|
|
|
// If offset, calculate appropriate margins
|
|
@if $offset { margin-#{$default-float}: gridCalc($offset, $total-columns); }
|
|
|
|
// Source Ordering, adds left/right depending on which you use.
|
|
@if $push { #{$default-float}: gridCalc($push, $total-columns); #{$opposite-direction}: auto; }
|
|
@if $pull { #{$opposite-direction}: gridCalc($pull, $total-columns); #{$default-float}: auto; }
|
|
|
|
// If centered, get rid of float and add appropriate margins
|
|
@if $center {
|
|
margin-#{$default-float}: auto;
|
|
margin-#{$opposite-direction}: auto;
|
|
float: none !important;
|
|
}
|
|
|
|
@if $float {
|
|
@if $float == left or $float == true { float: $default-float; }
|
|
@else if $float == right { float: $opposite-direction; }
|
|
@else { float: none; }
|
|
}
|
|
|
|
// This helps us not need to repeat "position:relative" everywehere
|
|
@if $include-position-relative { position: relative; }
|
|
}
|
|
|
|
|
|
@if $include-html-grid-classes != false {
|
|
/* Grid HTML Classes */
|
|
.row {
|
|
@include grid-row;
|
|
|
|
&.collapse {
|
|
.column,
|
|
.columns { @include grid-column($collapse:true); }
|
|
}
|
|
|
|
.row { @include grid-row($behavior:nest);
|
|
&.collapse { @include grid-row($behavior:nest-collapse); }
|
|
}
|
|
}
|
|
|
|
.column,
|
|
.columns { @include grid-column($columns:$total-columns, $include-position-relative: true); }
|
|
|
|
@media only screen {
|
|
|
|
@for $i from 1 through $total-columns {
|
|
.small#{-$i} { @include grid-column($columns:$i,$collapse:null,$float:false); }
|
|
}
|
|
|
|
@for $i from 0 through $total-columns - 2 {
|
|
.small-offset-#{$i} { @include grid-column($offset:$i, $collapse:null,$float:false); }
|
|
}
|
|
|
|
[class*="column"] + [class*="column"]:last-child { float: $opposite-direction; }
|
|
[class*="column"] + [class*="column"].end { float: $default-float; }
|
|
|
|
.column.small-centered,
|
|
.columns.small-centered { @include grid-column($center:true, $collapse:null, $float:false); }
|
|
}
|
|
|
|
@media only screen and (min-width: $small-screen) {
|
|
|
|
@for $i from 1 through $total-columns {
|
|
.medium#{-$i} { @include grid-column($columns:$i,$collapse:null,$float:false); }
|
|
}
|
|
|
|
@for $i from 0 through $total-columns - 1 {
|
|
.medium-offset-#{$i} { @include grid-column($offset:$i, $collapse:null,$float:false); }
|
|
}
|
|
|
|
@for $i from 1 through $total-columns - 1 {
|
|
.medium-push#{-$i} { @include grid-column($push:$i, $collapse:null, $float:false); }
|
|
.medium-pull#{-$i} { @include grid-column($pull:$i, $collapse:null, $float:false); }
|
|
}
|
|
|
|
.column.medium-centered,
|
|
.columns.medium-centered { @include grid-column($center:true, $collapse:null, $float:false); }
|
|
|
|
.column.medium-uncentered,
|
|
.columns.medium-uncentered {
|
|
margin-#{$default-float}: 0;
|
|
margin-#{$opposite-direction}: 0;
|
|
float: $default-float !important;
|
|
}
|
|
|
|
}
|
|
|
|
@media only screen and (min-width: $medium-screen) {
|
|
|
|
@for $i from 1 through $total-columns {
|
|
.large#{-$i} { @include grid-column($columns:$i,$collapse:null,$float:false); }
|
|
}
|
|
|
|
@for $i from 0 through $total-columns - 1 {
|
|
.large-offset-#{$i} { @include grid-column($offset:$i, $collapse:null,$float:false); }
|
|
}
|
|
|
|
@for $i from 1 through $total-columns - 1 {
|
|
.large-push#{-$i} { @include grid-column($push:$i, $collapse:null, $float:false); }
|
|
.large-pull#{-$i} { @include grid-column($pull:$i, $collapse:null, $float:false); }
|
|
}
|
|
|
|
.column.large-centered,
|
|
.columns.large-centered { @include grid-column($center:true, $collapse:null, $float:false); }
|
|
|
|
.column.large-uncentered,
|
|
.columns.large-uncentered {
|
|
margin-#{$default-float}: 0;
|
|
margin-#{$opposite-direction}: 0;
|
|
float: $default-float !important;
|
|
}
|
|
|
|
}
|
|
|
|
}
|