view sass/layouts/_responsive.scss @ 0:a3750d724105 default tip

initital
author Dirk Wintergruen <dwinter@mpiwg-berlin.mpg.de>
date Tue, 02 Jun 2015 09:16:36 +0200
parents
children
line wrap: on
line source

/**
 * @file
 * Positioning for a responsive layout.
 *
 * Define CSS classes to create a fluid grid layout with optional sidebars
 * depending on whether blocks are placed in the left or right sidebars.
 *
 * This layout uses the Zen Grids plugin for Compass: http://zengrids.com
 */

// We are going to create a fluid grid with 1, 3, or 5 columns and 20px gutters
// between columns (applied as 10px of left/right padding on each column).
$zen-column-count:  1;
$zen-gutter-width:  20px;

// If you need IE6/7 support for box-sizing: border-box (default), see _init.scss
//$zen-box-sizing: content-box;

// You can generate more efficient CSS if you manually apply the
// zen-grid-item-base mixin to all grid items from within a single ruleset.
$zen-auto-include-item-base: false;
// $zen-auto-include-flow-item-base: false;

// Suppress this section of CSS for RTL layouts since it contains no LTR-specific styles.
@if $zen-reverse-all-floats == false {

/**
 * Center the page.
 *
 * For screen sizes larger than 1200px, prevent excessively long lines of text
 * by setting a max-width.
 */
#page,
.region-bottom {
  margin-left: auto;
  margin-right: auto;
  max-width: 1200px;
}

/* Apply the shared properties of grid items in a single, efficient ruleset. */
#header,
#content,
#navigation,
.region-sidebar-first,
.region-sidebar-second,
#footer {
  // See the note about $zen-auto-include-item-base above.
  @include zen-grid-item-base();
}

/* Containers for grid items and flow items. */
#header,
#main,
#footer {
  @include zen-grid-container();
}

/* Navigation bar */
@media all and (min-width: 480px) {
  #main {
    /* Move all the children of #main down to make room. */
    padding-top: $nav-height;
    position: relative;
  }
  #navigation {
    /* Move the navbar up inside #main's padding. */
    position: absolute;
    top: 0;
    height: $nav-height;
    width: $zen-grid-width;
  }
}

} // End of @if $zen-reverse-all-floats == true

/**
 * Use 3 grid columns for smaller screens.
 */
@media all and (min-width: 480px) and (max-width: 959px) {

  $zen-column-count: 3;

  /**
   * The layout when there is only one sidebar, the left one.
   */
  .sidebar-first {
    /* Span 2 columns, starting in 2nd column from left. */
    #content {
      @include zen-grid-item(2, 2);
    }

    /* Span 1 column, starting in 1st column from left. */
    .region-sidebar-first {
      @include zen-grid-item(1, 1);
    }
  }

  /**
   * The layout when there is only one sidebar, the right one.
   */
  .sidebar-second {
    /* Span 2 columns, starting in 1st column from left. */
    #content {
      @include zen-grid-item(2, 1);
    }

    /* Span 1 column, starting in 3rd column from left. */
    .region-sidebar-second {
      @include zen-grid-item(1, 3);
    }
  }

  /**
   * The layout when there are two sidebars.
   */
  .two-sidebars {
    /* Span 2 columns, starting in 2nd column from left. */
    #content {
      @include zen-grid-item(2, 2);
    }

    /* Span 1 column, starting in 1st column from left. */
    .region-sidebar-first {
      @include zen-grid-item(1, 1);
    }

    /* Start a new row and span all 3 columns. */
    .region-sidebar-second {
      @include zen-grid-item(3, 1);
      @include zen-nested-container(); // Since we're making every block in this region be a grid item.
      @include zen-clear();

      /* Apply the shared properties of grid items in a single, efficient ruleset. */
      .block {
        @include zen-grid-item-base();
      }
      /* Span 1 column, starting in the 1st column from left. */
      .block:nth-child(3n+1) {
        @include zen-grid-item(1, 1);
        @include zen-clear();
      }
      /* Span 1 column, starting in the 2nd column from left. */
      .block:nth-child(3n+2) {
        @include zen-grid-item(1, 2);
      }
      /* Span 1 column, starting in the 3rd column from left. */
      .block:nth-child(3n) {
        @include zen-grid-item(1, 3);
      }
    }
  }
}

/**
 * Use 5 grid columns for larger screens.
 */
@media all and (min-width: 960px) {

  $zen-column-count: 5;

  /**
   * The layout when there is only one sidebar, the left one.
   */
  .sidebar-first {
    /* Span 4 columns, starting in 2nd column from left. */
    #content {
      @include zen-grid-item(4, 2);
    }

    /* Span 1 column, starting in 1st column from left. */
    .region-sidebar-first {
      @include zen-grid-item(1, 1);
    }
  }

  /**
   * The layout when there is only one sidebar, the right one.
   */
  .sidebar-second {
    /* Span 4 columns, starting in 1st column from left. */
    #content {
      @include zen-grid-item(4, 1);
    }

    /* Span 1 column, starting in 5th column from left. */
    .region-sidebar-second {
      @include zen-grid-item(1, 5);
    }
  }

  /**
   * The layout when there are two sidebars.
   */
  .two-sidebars {
    /* Span 3 columns, starting in 2nd column from left. */
    #content {
      @include zen-grid-item(3, 2);
    }

    /* Span 1 column, starting in 1st column from left. */
    .region-sidebar-first {
      @include zen-grid-item(1, 1);
    }

    /* Span 1 column, starting in 5th column from left. */
    .region-sidebar-second {
      @include zen-grid-item(1, 5);
    }
  }
}