Typography

The standard font Material Design uses is Roboto. We have included the font files with our framework.

Roboto 2.0

We bundle our framework with the latest iteration of Roboto Google has released. It comes with 5 different font weights you can use: 200, 300, 400, 500, 600.

Here is an image from Google's Roboto Specimen document displaying the different font weights.

Removing Roboto

In case you don't want to use Roboto on your webpage, fear not. Simply change the font stack by modifying the code below to your liking and add it to your custom css.


  html {
    font-family: GillSans, Calibri, Trebuchet, sans-serif
  }
        

Headers

We provide some basic styling on header tags. In the example on the right, you can see the difference in sizes between the 6 header tags

Heading h1

Heading h2

Heading h3

Heading h4

Heading h5
Heading h6

Blockquotes

Blockquotes are mainly used to give emphasis to a quote or citation. You can also use these for some extra text hierarchy and emphasis.

This is an example quotation that uses the blockquote tag.
Here is another line to make it look bigger.

    <blockquote>
      This is an example quotation that uses the blockquote tag.
    </blockquote>
          

Flow Text

Toggle flow-text

One common flaw we've seen in many frameworks is a lack of support for truly responsive text. While elements on the page resize fluidly, text still resizes on a fixed basis. To ameliorate this problem, for text heavy pages, we've created a class that fluidly scales text size and line-height to optimize readability for the user. Line length stays between 45-80 characters and line height scales to be larger on smaller screens.

To see Flow Text in action, slowly resize your browser and watch the size of this text body change! Use the button above to toggle off/on flow-text to see the difference!


To use flow-text on a body of text, simply just add the class flow-text to a tag, see the code blow.


    <p class="flow-text">I am Flow Text</p>
          

Grids

We are using a standard 12 column fluid responsive grid system. It comes with 3 standard screen size media queries where you can alter the columns.

Mobile Devices
<= 600px
Tablet Devices
<= 992px
Desktop Devices
>= 992px
Class Prefix .s .m .l
Container Width 85% 85% 70%
Number of Columns 12 12 12


Container

The container class is set to ~70% of the window width. It helps you center and contain your page content. We use the container to contain our body content. Try the button below to see what the page looks like without containers

Toggle Containers

To add a container just put your content inside a <div> tag with a container class. Here's an example of how your page might be set up.


  <body>
    <div class="container">
      <!-- Page Content goes here -->
    </div>
  </body>
        

Grid Examples

s12

s12 m3

s12 m6

s12 m3

s12 m6 l3

s12 m6 l3

s12 m6 l3

s12 m6 l3


    <div class="row">
    <div class="col s12"><p>s12</p></div>
    <div class="col s12 m3"><p>s12 m3</p></div>
    <div class="col s12 m6"><p>s12 m6</p></div>
    <div class="col s12 m3"><p>s12 m3</p></div>
    </div>
    <div class="row">
    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
    <div class="col s12 m6 l3"><p>s12 m6 l3</p></div>
    </div>
          

Offsets

You can use offsets to make smaller sized columns without needing to fill in the empty space.

s8 offset-s2

s8 offset-s2 m8 offset-m4 l10 offset-l2


    <div class="col s8 offset-s2">
      <p>s8 offset-s2</p>
    </div>
    <div class="col s6 offset-s6 m8 offset-m4 l10 offset-l2">
      <p>s8 offset-s2 m8 offset-m4 l10 offset-l2</p>
    </div>
          

Forms

Forms are the standard way to receive user inputted data. The transitions and smoothness of these elements are very important because of the inherent user interaction associated with forms.

Input fields

Text fields allow user input. The border should light up simply and clearly indicating which field the user is currently editing.



  <div class="row">
    <form class="col s12">
      <div class="row">
        <div class="input-field col s6">
          <input id="first_name" type="text" required>
          <label for="first_name">First Name</label>
        </div>
        <div class="input-field col s6">
          <input id="last_name" type="text" required>
          <label for="last_name">Last Name</label>
        </div>
      </div>
      <div class="row">
        <div class="input-field col s12">
          <input id="username" type="text" required>
          <label for="username">Username</label>
        </div>
      </div>
      <div class="row">
        <div class="input-field col s12">
          <input id="password" type="password" required>
          <label for="password">Password</label>
        </div>
      </div>
      <div class="row">
        <div class="input-field col s12">
          <input id="email" type="email" required>
          <label for="email">Email</label>
        </div>
      </div>
    </form>
  </div>
          

Textarea

Textareas allow larger expandable user input. The border should light up simply and clearly indicating which field the user is currently editing.

Textareas will auto resize to the text inside.


  <div class="row">
    <form class="col s12">
      <div class="row">
        <div class="input-field col s12">
          <textarea></textarea>                
          <label>Textarea</label>
        </div>
      </div>
    </form>
  </div>
          

Select

Select allows user input through specified options.




You can add the class disabled to get the browser default.


  <label>Option</label>
  <select>
    <option value="" disabled selected>Choose your option</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
  </select>

  <select class="disabled">
    <option value="" disabled selected>Choose your option</option>
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
  </select>
          

Radio Buttons

Radio Buttons are used when the user must make only one selection out of a group of items

Add radio buttons to a group by adding the name attribute along with the same corresponding value for each of the radio buttons in the group. Create disabled radio buttons by adding the disabled attribute as shown below.


  <form action="#">
    <p>
      <input name="group1" type="radio" id="test1" />
      <label for="test1">Red</label>
    </p>
    <p>
      <input name="group1" type="radio" id="test2" />
      <label for="test2">Yellow</label>
    </p>
    <p>
      <input name="group1" type="radio" id="test3"  />
      <label for="test3">Green</label>
    </p>
      <p>
        <input name="group1" type="radio" id="test4" disabled="disabled" />
        <label for="test4">Brown</label>
    </p>
  </form>
          

Checkboxes

Checkboxes


  <form action="#">
    <p>
      <input type="checkbox" id="test5" />
      <label for="test5">Red</label>
    </p>
    <p>
      <input type="checkbox" id="test6" checked="checked" />
      <label for="test6">Yellow</label>
    </p>
    <p>
      <input type="checkbox" id="test7" checked="checked" disabled="disabled" />
      <label for="test7">Green</label>
    </p>
      <p>
        <input type="checkbox" id="test8" disabled="disabled" />
        <label for="test8">Brown</label>
    </p>
  </form>
          

Range

Add a range slider for values with a wide range. This one is set to be a number between 0 and 100.


  <form action="#">
    <p class="range-field">
      <input type="range" id="test5" />
      <label for="test5">Red</label>
    </p>
  </form>
          

Date Picker

We use a modified version of pickadate.js to create a materialized date picker. Test it out below!


  <input type="date" class="datepicker"></div>
          
Initialization

At this time, not all pickadate.js options are working with our implementation


  $('.datepicker').pickadate();
        

Buttons

There are 3 main button types described in material design. The raised button is a standard button that signify actions and seek to give depth to a mostly flat page. The floating circular action button is meant for very important functions. Flat buttons are usually used within elements that already have depth like cards or modals.

Raised

button button button

  <a href="" class="waves-effect waves-light btn">Stuff</a>
  <a class="waves-effect waves-light btn"><i class="mdi-file-cloud"></i>button</a>
  <a class="waves-effect waves-light btn"><i class="mdi-file-cloud right"></i>button</a>
          

Floating


<a href="" class="button floating"><i class="mdi-content-add"></i></a>
        

Flat

Button

<a href="" class="waves-effect button flat">Button</a>
        

Submit Button

When you use a button to submit a form, instead of using a input tag, use a button tag with a type submit


  <button class="btn waves-effect waves-light" type="submit" name="action">Submit
    <i class="mdi-content-send right"></i>
  </button>
        

Additional Styles

Large

This button has a larger height for buttons that need more attention.

Button button button

<a href="" class="waves-effect waves-light btn-large">Button</a>
<a class="waves-effect waves-light btn-large"><i class="mdi-file-cloud"></i>button</a>
<a class="waves-effect waves-light btn-large"><i class="mdi-file-cloud right"></i>button</a>
        

Disabled

This style can be applied to all button types

Button Button Button

<a class="btn-large disabled">Button</a>
<a class="btn disabled">Button</a>
<a class="btn-flat disabled">Button</a>
<a class="btn-floating disabled"><i class="mdi-content-add"></i></a>
        

Left Aligned Links

To left align your navbar links, just add a left class to your <ul> that contains them.



    <nav>
      <div class="nav-wrapper">
        <a href="#" class="brand-logo right">Logo</a>
        <ul id="nav-mobile" class="left side-nav">
          <li><a href="sass.html">Sass</a></li>
          <li><a href="components.html">Components</a></li>
          <li><a href="javascript.html">JavaScript</a></li>
        </ul>
        <a class="button-collapse" href="#" data-activates="nav-mobile"><i class="mdi-navigation-menu"></i></a>
      </div>
    </nav>
          

Mobile Collapse Button


When your nav bar is resized, you will see that the links on the right turn into a hamburger icon

If you already included the code for the button collapse as we did in the examples above, all you have to do now is place this code in your page's $( document ).ready(function(){}) code. This example below assumes you have not modified the classes in the above example. In the case that you have, just change the jQuery selector in the line below to match it.


    $(".button-collapse").sideNav();
        

Cards

Cards are a convenient means of displaying content composed of different types of objects. They’re also well-suited for presenting similar objects whose size or supported actions can vary considerably, like photos with captions of variable length.

Card Title
Card Title

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

Card Title

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

Card Title

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.


      <div class="col s12 m6">
        <div class="card blue-grey darken-1">
          <div class="card-image">
            <span class="card-title">Card Title</span>
          </div>  
          <div class="card-content white-text">
            <span class="card-title">Card Title</span>
            <p>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively. <br>
          </div>
          <div class="card-action">
            <a href="#">This is a link</a>
            <a href='#'>This is a link</a>
          </div>
        </div>
      </div>
      <div class="col s12 m6">
        <div class="card">
          <div class="card-image">
            <img src="images/sample-1.jpg">
            <span class="card-title">Card Title</span>
          </div>  
          <div class="card-content">
            <p>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.</p>
          </div>
          <div class="card-action">
            <a href="#">This is a link</a>
            <a href='#'>This is a link</a>
          </div>
        </div>
      </div>
      <div class="col s12">
        <div class="card small">
          <div class="card-image">
            <img src="images/sample-1.jpg">
            <span class="card-title">Card Title</span>
          </div>  
          <div class="card-content">
            <p>I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.</p>
          </div>
          <div class="card-action">
            <a href="#">This is a link</a>
            <a href='#'>This is a link</a>
          </div>
        </div>
      </div>
      

Card Panel

For a simpler card with less markup, try using a card panel which just has padding and a shadow effect

I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.

  <div class="row">
    <div class="col s12 m4">
      <div class="card-panel teal"> <span class="white-text">I am a very simple card. I am good at containing small bits of information. I am convenient because I require little markup to use effectively.</span>
      </div>
    </div>
  </div>
      

Preloader

If you have content that will take a long time to load, you should give the user feedback. In this case we have an animated preloader.


  <div class="preloader-wrapper big active">
    <div class="spinner-layer spinner-blue">
      <div class="circle-clipper left">
        <div class="circle"></div>
      </div><div class="gap-patch">
        <div class="circle"></div>
      </div><div class="circle-clipper right">
        <div class="circle"></div>
      </div>
    </div>

    <div class="spinner-layer spinner-red">
      <div class="circle-clipper left">
        <div class="circle"></div>
      </div><div class="gap-patch">
        <div class="circle"></div>
      </div><div class="circle-clipper right">
        <div class="circle"></div>
      </div>
    </div>

    <div class="spinner-layer spinner-yellow">
      <div class="circle-clipper left">
        <div class="circle"></div>
      </div><div class="gap-patch">
        <div class="circle"></div>
      </div><div class="circle-clipper right">
        <div class="circle"></div>
      </div>
    </div>

    <div class="spinner-layer spinner-green">
      <div class="circle-clipper left">
        <div class="circle"></div>
      </div><div class="gap-patch">
        <div class="circle"></div>
      </div><div class="circle-clipper right">
        <div class="circle"></div>
      </div>
    </div>
  </div>
      

Collections

Collections allow you to group list objects together.

Basic

  • Alvin
  • Alvin
  • Alvin
  • Alvin

  <ul class="collection">
    <li class="collection-item">Alvin</li>
    <li class="collection-item">Alvin</li>
    <li class="collection-item">Alvin</li>
    <li class="collection-item">Alvin</li>
  </ul>
          

Basic with different HTML structure


  <div class="collection">
    <a href="#!" class="collection-item">Alvin</a>
    <a href="#!" class="collection-item active">Alvin</a>
    <a href="#!" class="collection-item">Alvin</a>
    <a href="#!" class="collection-item">Alvin</a>
  </div>
        

Headers

  • First Names

  • Alvin
  • Alvin
  • Alvin
  • Alvin

  <ul class="collection with-header">
    <li class="collection-header"><h4>First Names</h4></li>
    <li class="collection-item">Alvin</li>
    <li class="collection-item">Alvin</li>
    <li class="collection-item">Alvin</li>
    <li class="collection-item">Alvin</li>
  </ul>
        

Secondary content

  • First Names

  • Alvin
  • Alvin
  • Alvin
  • Alvin

  <ul class="collection with-header">
    <li class="collection-header"><h4>First Names</h4></li>
    <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="secondary-content mdi-content-send"></i></a></div></li>
    <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
    <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
    <li class="collection-item"><div>Alvin<a href="#!" class="secondary-content"><i class="mdi-content-send"></i></a></div></li>
  </ul>
        

Tables

Tables are a nice way to organize a lot of data. We provide a few utility classes to help you style your table as easily as possible. In addition, to improve mobile experience, all tables on mobile-screen widths are centered automatically.

Borderless Table

Tables are borderless by default.

Name Item Name Item Price
Alvin Eclair $0.87
Alan Jellybean $3.76
Jonathan Lollipop $7.00

  <table>
    <thead>
      <tr>
          <th data-field="id">Name</th>
          <th data-field="name">Item Name</th>
          <th data-field="price">Item Price</th>
      </tr>
    </thead>
    
    <tbody>
      <tr>
        <td>Alvin</td>
        <td>Eclair</td>
        <td>$0.87</td>
      </tr>
      <tr>
        <td>Alan</td>
        <td>Jellybean</td>
        <td>$3.76</td>
      </tr>
      <tr>
        <td>Jonathan</td>
        <td>Lollipop</td>
        <td>$7.00</td>
      </tr>
    </tbody>
  </table>
      

Bordered Table

Add class="bordered" to the table tag for a bordered table

Name Item Name Item Price
Alvin Eclair $0.87
Alan Jellybean $3.76
Jonathan Lollipop $7.00

Striped Table

Add class="striped" to the table tag for a striped table

Name Item Name Item Price
Alvin Eclair $0.87
Alan Jellybean $3.76
Jonathan Lollipop $7.00

Hoverable Table

Add class="hoverable" to the table tag for a hoverable table

Name Item Name Item Price
Alvin Eclair $0.87
Alan Jellybean $3.76
Jonathan Lollipop $7.00

Centered Table

Add class="centered" to the table tag to center align all the text in the table

Name Item Name Item Price
Alvin Eclair $0.87
Alan Jellybean $3.76
Jonathan Lollipop $7.00