embd/bower_components/gumby/sass/functions/_grid-calc.scss

83 lines
3.0 KiB
SCSS
Executable File

// Calculate grid values
$gutter: percentage($gutter-in-px / $row-max-width); // 2.1276596
// Return single column width
@function oneCol($hybrid-grid: false) {
@if ($hybrid-grid == true){
@return (100% - ($gutter * ($hybrid - 1))) / $hybrid;
}
@else{
@return (100% - ($gutter * ($cols - 1))) / $cols;
}
}
// Calculate Grid Column Widths
@function columns($num, $hybrid-grid: false){
@if ($hybrid-grid == true) {
@return (oneCol(true) * $num) + ($gutter * ($num - 1));
}
@else {
@return (oneCol() * $num) + ($gutter * ($num - 1)); // (One column * 'x') + (gutter * ('x' - 1)) = Column Width
}
}
// Calculate the width required to acheive a desired global column number within a nested grid
@function global-columns($desired_cols, $container_cols, $hybrid-grid: false){
@if ($hybrid-grid == true) {
@return (100% * (columns($desired_cols, true) / columns($container_cols, true)));
}
@else {
@return (100% * (columns($desired_cols) / columns($container_cols)));
}
}
// Calculate Push Class Margins
@function push_x($num, $first-child: false, $is-hybrid: false) {
@if $first-child and $is-hybrid {
@return (oneCol(true) * $num) + ($gutter * ($num - 1)) + $gutter; // Column width + gutter
}
@else if $first-child != true and $is_hybrid{
@return (oneCol(true) * $num) + ($gutter * ($num - 1)) + ($gutter * 2); // Column width + (gutter * 2)
}
@else if $first-child and $is_hybrid != true{
@return (oneCol() * $num) + ($gutter * ($num - 1)) + $gutter;
}
@else {
@return (oneCol() * $num) + ($gutter * ($num - 1)) + ($gutter * 2); // Column width + (gutter * 2)
}
}
// Calculate Pull Class Margins
// note absence of first-child; first-child column containers should not be pulled
// $num is number of columns to be pulled
// $width is number of columns of container that is being pulled
@function pull_x($num, $width, $is-hybrid: false) {
@if $is-hybrid {
@return -((oneCol(true) * $num) + ($gutter * ($num - 1)) + (oneCol(true) * $width) + ($gutter * ($width - 1)) + $gutter); // Pull width + column width + gutter
}
@else {
@return -((oneCol() * $num) + ($gutter * ($num - 1)) + (oneCol() * $width) + ($gutter * ($width - 1)) + $gutter); // Pull width + column width + gutter
}
}
// Calculate Centered Class Margins
@function centered($num, $hybrid-grid: false) {
@if $hybrid-grid{
@return 50% - ((($num * (oneCol(true))) + (($num - 1) * $gutter)) / 2);
}
@else{
@return 50% - ((($num * (oneCol())) + (($num - 1) * $gutter)) / 2);
}
}
// Create class names from column count integers
@function number-as-word($number){
$w: "one", "two", "three", "four", "five", "six", "seven", "eight", "nine", "ten", "eleven",
"twelve", "thirteen", "fourteen", "fifteen", "sixteen", "seventeen", "eighteen", "nineteen",
"twenty", "twenty-one", "twenty-two", "twenty-three", "twenty-four", "twenty-five", "twenty-six", "twenty-seven",
"twenty-eight", "twenty-nine", "thirty", "thirty-one", "thirty-two", "thirty-three",
"thirty-four", "thirty-five", "thirty-six";
@return nth($w, $number);
}