/** * Copyright 2015 Google Inc. All Rights Reserved. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ /* * NOTE: Some rules here are applied using duplicate selectors. * This is on purpose to increase their specificity when applied. * For example: `.mdl-cell--1-col-phone.mdl-cell--1-col-phone` */ @import "variables"; .mdl-grid { display: flex; flex-flow: row wrap; margin: 0 auto 0 auto; align-items: stretch; &.mdl-grid--no-spacing { padding: 0; } } .mdl-cell { box-sizing: border-box; } .mdl-cell--top { align-self: flex-start; } .mdl-cell--middle { align-self: center; } .mdl-cell--bottom { align-self: flex-end; } .mdl-cell--stretch { align-self: stretch; } .mdl-grid.mdl-grid--no-spacing > .mdl-cell { margin: 0; } // Define order override classes. @for $i from 1 through $grid-max-columns { .mdl-cell--order-#{$i} { order: $i; } } // Mixins for width calculation. @mixin partial-size($size, $columns, $gutter) { width: calc(#{(($size / $columns) * 100)+"%"} - #{$gutter}); .mdl-grid--no-spacing > & { width: #{(($size / $columns) * 100)+"%"}; } } @mixin full-size($gutter) { @include partial-size(1, 1, $gutter); } @mixin offset-size($size, $columns, $gutter) { margin-left: calc(#{(($size / $columns) * 100)+"%"} + #{$gutter / 2}); .mdl-grid.mdl-grid--no-spacing > & { margin-left: #{(($size / $columns) * 100)+"%"}; } } ////////// Phone ////////// @media (max-width: $grid-tablet-breakpoint - 1) { .mdl-grid { padding: $grid-phone-margin - ($grid-phone-gutter / 2); } .mdl-cell { margin: $grid-phone-gutter / 2; @include partial-size($grid-cell-default-columns, $grid-phone-columns, $grid-phone-gutter); } .mdl-cell--hide-phone { display: none !important; } // Define order override classes. @for $i from 1 through $grid-max-columns { .mdl-cell--order-#{$i}-phone.mdl-cell--order-#{$i}-phone { order: $i; } } // Define partial sizes for columnNumber < totalColumns. @for $i from 1 through ($grid-phone-columns - 1) { .mdl-cell--#{$i}-col, .mdl-cell--#{$i}-col-phone.mdl-cell--#{$i}-col-phone { @include partial-size($i, $grid-phone-columns, $grid-phone-gutter); } } // Define 100% for everything else. @for $i from $grid-phone-columns through $grid-desktop-columns { .mdl-cell--#{$i}-col, .mdl-cell--#{$i}-col-phone.mdl-cell--#{$i}-col-phone { @include full-size($grid-phone-gutter); } } // Define valid phone offsets. @for $i from 1 through ($grid-phone-columns - 1) { .mdl-cell--#{$i}-offset, .mdl-cell--#{$i}-offset-phone.mdl-cell--#{$i}-offset-phone { @include offset-size($i, $grid-phone-columns, $grid-phone-gutter); } } } ////////// Tablet ////////// @media (min-width: $grid-tablet-breakpoint) and (max-width: $grid-desktop-breakpoint - 1) { .mdl-grid { padding: $grid-tablet-margin - ($grid-tablet-gutter / 2); } .mdl-cell { margin: $grid-tablet-gutter / 2; @include partial-size($grid-cell-default-columns, $grid-tablet-columns, $grid-tablet-gutter); } .mdl-cell--hide-tablet { display: none !important; } // Define order override classes. @for $i from 1 through $grid-max-columns { .mdl-cell--order-#{$i}-tablet.mdl-cell--order-#{$i}-tablet { order: $i; } } // Define partial sizes for columnNumber < totalColumns. @for $i from 1 through ($grid-tablet-columns - 1) { .mdl-cell--#{$i}-col, .mdl-cell--#{$i}-col-tablet.mdl-cell--#{$i}-col-tablet { @include partial-size($i, $grid-tablet-columns, $grid-tablet-gutter); } } // Define 100% for everything else. @for $i from $grid-tablet-columns through $grid-desktop-columns { .mdl-cell--#{$i}-col, .mdl-cell--#{$i}-col-tablet.mdl-cell--#{$i}-col-tablet { @include full-size($grid-tablet-gutter); } } // Define valid tablet offsets. @for $i from 1 through ($grid-tablet-columns - 1) { .mdl-cell--#{$i}-offset, .mdl-cell--#{$i}-offset-tablet.mdl-cell--#{$i}-offset-tablet { @include offset-size($i, $grid-tablet-columns, $grid-tablet-gutter); } } } ////////// Desktop ////////// @media (min-width: $grid-desktop-breakpoint) { .mdl-grid { padding: $grid-desktop-margin - ($grid-desktop-gutter / 2); } .mdl-cell { margin: $grid-desktop-gutter / 2; @include partial-size($grid-cell-default-columns, $grid-desktop-columns, $grid-desktop-gutter); } .mdl-cell--hide-desktop { display: none !important; } // Define order override classes. @for $i from 1 through $grid-max-columns { .mdl-cell--order-#{$i}-desktop.mdl-cell--order-#{$i}-desktop { order: $i; } } // Define partial sizes for all numbers of columns. @for $i from 1 through $grid-desktop-columns { .mdl-cell--#{$i}-col, .mdl-cell--#{$i}-col-desktop.mdl-cell--#{$i}-col-desktop { @include partial-size($i, $grid-desktop-columns, $grid-desktop-gutter); } } // Define valid desktop offsets. @for $i from 1 through ($grid-desktop-columns - 1) { .mdl-cell--#{$i}-offset, .mdl-cell--#{$i}-offset-desktop.mdl-cell--#{$i}-offset-desktop { @include offset-size($i, $grid-desktop-columns, $grid-desktop-gutter); } } }