mayth/parasol

View on GitHub
app/assets/stylesheets/layout.css.scss

Summary

Maintainability
Test Coverage
/*
When setting the primary font stack, apply it to the Pure grid units along
with `html`, `button`, `input`, `select`, and `textarea`. Pure Grids use
specific font stacks to ensure the greatest OS/browser compatibility.
*/
html, button, input, select, textarea,
.pure-g [class *= "pure-u"] {
    /* Set your content font stack here: */
    font-family: "Open Sans", sans-serif;
}

.pure-img-responsive {
  max-width: 100%;
  height: auto;
}

/*
Add transition to containers so they can push in and out.
*/
#layout,
#menu,
.menu-link {
  -webkit-transition: all 0.2s ease-out;
  -moz-transition: all 0.2s ease-out;
  -ms-transition: all 0.2s ease-out;
  -o-transition: all 0.2s ease-out;
  transition: all 0.2s ease-out;
}

$menu-width: 175px;

/*
This is the parent `<div>` that contains the menu and the content area.
*/
#layout {
  position: relative;
  padding-left: 0;

  &.active {
      position: relative;
      left: $menu-width;
      #menu {
        left: $menu-width;
        width: $menu-width;
      }
      .menu-link {
        left: $menu-width;
      }
  }
}

/*
The content `<div>` is where all your content goes.
*/
.content {
  margin: 0 auto;
  padding: 1em 2em 0 2em;
  max-width: 800px;
  margin-bottom: 50px;
  line-height: 1.6em;
}

.header {
  margin: 0;
  color: #333;
  text-align: center;
  padding: 2.5em 2em 0;
  border-bottom: 2px solid #db2122;

  h1 {
    margin: 0.2em 0;
    font-size: 3em;
    font-weight: 300;
  }
  h2 {
    font-weight: 300;
    color: #666;
    padding: 0;
    margin-top: 0;
  }
}

.content-subhead,
.content section h1 {
  margin: 50px 0 20px 0;
  font-weight: 300;
  color: #666;
}

/*
The `#menu` `<div>` is the parent `<div>` that contains the `.pure-menu` that
appears on the left side of the page.
*/

#menu {
  margin-left: -$menu-width; /* "#menu" width */
  width: $menu-width;
  position: fixed;
  top: 0;
  left: 0;
  bottom: 0;
  z-index: 1000; /* so the menu or its navicon stays above all content */
  background: #191818;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;

  /*
  All anchors inside the menu should be styled like this.
  */
  a {
    color: #999;
    border: none;
    padding: 0.6em 0 0.6em 0.6em;
  }

  /*
  Remove all background/borders, since we are applying them to #menu.
  */
  .pure-menu,
  .pure-menu ul {
    border: none;
    background: transparent;
  }

  /*
  Add that light border to separate items into groups.
  */
  .pure-menu ul,
  .pure-menu .menu-item-divided {
    border-top: 1px solid #333;
  }

  .pure-menu li:not(.pure-menu-selected) a {
    &:hover, &:focus {
      background: #333;
    }
  }

  .pure-menu li.pure-menu-selected a {
    &:hover, &:focus {
      background: #1f8dd6;
    }
  }

  .pure-menu-heading {
    background: #333;
  }

  /*
  This styles the selected menu item `<li>`.
  */
  .pure-menu-selected {
    background: #1f8dd6;
  }

  /*
  This styles a link within a selected menu item `<li>`.
  */
  .pure-menu-selected a {
    color: #fff;
  }

  /*
  This styles the menu heading.
  */
  .pure-menu-heading {
    font-size: 110%;
    color: #fff;
    margin: 0;
  }
}

/* -- Dynamic Button For Responsive Menu -------------------------------------*/

/*
The button to open/close the Menu is custom-made and not part of Pure. Here's
how it works:
*/

/*
`.menu-link` represents the responsive menu toggle that shows/hides on
small screens.
*/
.menu-link {
  position: fixed;
  display: block; /* show this only on small screens */
  top: 0;
  left: 0; /* "#menu width" */
  background: #000;
  background: rgba(0,0,0,0.7);
  font-size: 10px; /* change this value to increase/decrease button size */
  z-index: 10;
  width: 2em;
  height: auto;
  padding: 2.1em 1.6em;

  &:hover, &:focus {
    background: #000;
  }

  span {
    position: relative;
    display: block;
    &, &:before, &:after {
      background-color: #fff;
      width: 100%;
      height: 0.2em;
    }

    &:before, &:after {
      position: absolute;
      margin-top: -0.6em;
      content: " ";
    }

    &:after {
      margin-top: 0.6em;
    }
  }
}

/* -- Responsive Styles (Media Queries) ------------------------------------- */

/*
Hides the menu at `48em`, but modify this based on your app's needs.
*/
@media (min-width: 48em) {
  .header,
  .content {
    padding-left: 2em;
    padding-right: 2em;
  }

  #layout {
    padding-left: $menu-width; /* left col width "#menu" */
    left: 0;
  }
  #menu {
    left: $menu-width;
  }
  .menu-link {
    position: fixed;
    left: $menu-width;
    display: none;
  }

  #layout.active .menu-link {
    left: $menu-width;
  }
}

h1 small {
  color: #555;
  font-size: 50%;
  font-weight: 300;
}

.post-date {
  color: #666;
  font-size: 75%;
}

.read-all {
  font-size: 80%;
  &:before {
    content: '\BB\2002'
  }
}

article .body,
article .body + .read-all {
  margin-left: 1em;
}

.flash-wrapper {
  position: relative;
  z-index: 999;
  .flash {
    position: absolute;
    width: 100%;
    * {
      top: 0;
      left: 0;
      padding: 10px;
      text-align: center;
    }
    .notice {
      background: transparentize(#97FCBB, 0.2);
    }
    .alert {
      background: transparentize(#FCC097, 0.2);
    }
    .closing-instruction {
      font-size: 75%;
      padding: 0;
      text-align: right;
    }
    .close {
      font-size: 80%;
    }
  }
}