material-shadows

Mixins for Material Design Shadows


Keywords
google, material, design, material-design, google-material-design, shadows, shadow, depth, less, sass, stylus
License
MIT
Install
npm install material-shadows@3.0.1

Documentation

Material Design Shadows

The paper shadows mixin-library for CSS pre-processors (Less, Sass and Stylus), based on Google's Material Design.

Quick start

Several quick start options are available:

  • Download the latest release.
  • Clone the repo: git clone git://github.com/mrmlnc/material-shadows.git.
  • Install with Bower: bower install material-shadows --save-dev.

How to use

Just import the file, which includes mixins in your project.

// Less
@import "lib/material-shadows";
// Sass
@import "lib/material-shadows"
// Stylus
@import "lib/material-shadows";

Syntax

// Syntax
.example {
  // Full shadow: top & bottom
  .z-depth(@depth);
  // Parameters:
  // - @depth number from a range [1..5] || default: 1

  // Top or bottom shadow
  .z-depth-top(@depth);
  .z-depth-bottom(@depth);

  // Animation
  .z-depth-animation(@depth, @orientation);
  // Parameters:
  //  - @depth number from a range [1..5] || default: 1
  //  - @orientation: 'top' or 'bottom' || default: full

  // Generate helper classes
  .z-depth-class(); // more details in section `Helper classes`
}

Examples

Examples are written using the CSS pre-processor Less. If you need examples of using a different language (Sass, Stylus), go to the directory test/.

Simple example

// Include library
@import "lib/material-color";

// Global header
.site-header {
  ...
  .z-depth(); // or also .z-depth(1);
}

// Article card
.article-card {
  ...
  .z-depth(3);
}

// Navigation bar
.navbar {
  ...
  .z-depth-bottom(); // or also .z-depth-bottom(1);
}

Animation example

For the convenience in the library added mixin for create animation. The parent selector must contain a class with an mixin of animation. Its syntax is as follows:

// Include library
@import "lib/material-color";

//Article card
.article-list {
  transition: box-shadow .28s cubic-bezier(.4, 0, .2, 1);
  .z-depth-animation(3, top);

  & > .item {
    .z-depth(1); // or also .z-depth();
  }
}

HTML markup for .z-depth-animation():

<div class="article-list">
  <article class="item">Article with .z-depth(1)</article>
</div>

Helper classes

You can also create a helper classes for all levels shadows.

// Include library
@import "lib/material-color";

// Generate all levels shadows
.z-depth {
  .z-depth-class(); // Parameters: [@animation, @time, @function]
}

// => (output)
.z-depth-1        { box-shadow: 0 2px 5px rgba(0, 0, 0, 0.16), 0 2px 10px rgba(0, 0, 0, 0.12); }
.z-depth-1-top    { box-shadow: 0 2px 10px rgba(0, 0, 0, 0.12); }
.z-depth-1-bottom { box-shadow: 0 2px 5px rgba(0, 0, 0, 0.16); }
...
.z-depth-5        { ... }
...
.z-depth-animation .z-depth-1,
.z-depth-animation .z-depth-2,
.z-depth-animation .z-depth-3,
.z-depth-animation .z-depth-4,
.z-depth-animation .z-depth-5 {
  transition: box-shadow 0.28s cubic-bezier(0.4, 0, 0.2, 1);
}

You can change the animation function. Options for animation:

  • @animation: [true (default) | false];
  • @time: .28s;
  • @function: cubic-bezier(.4, 0, .2, 1);

Default settings are taken from the Polymer project.