The standard font Material Design uses is Roboto. We have included the font files with our framework.
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.
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
}
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
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>
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>
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 |
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 ContainersTo 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>
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>
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 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.
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>
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 allows user input through specified options.
<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 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
<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>
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>
We use a modified version of pickadate.js to create a materialized date picker. Test it out below!
<input type="date" class="datepicker">
At this time, not all pickadate.js options are working with our implementation
$('.datepicker').pickadate();
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.
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>
This button has a larger height for buttons that need more attention.
Button button button
<a class="waves-effect waves-light btn-large">Button</a>
<a class="waves-effect waves-light btn-large"><i class="mdi-file-cloud left"></i>button</a>
<a class="waves-effect waves-light btn-large"><i class="mdi-file-cloud right"></i>button</a>
The navbar is fully contained by an HTML5 Nav tag. Inside a recommended container div, there are 2 main parts of the navbar. A logo or brand link, and the navigations links. You can align these links to the left or right.
To right align your navbar links, just add a right
class to your <ul>
that contains them.
<nav>
<div class="nav-wrapper">
<a href="#" class="brand-logo">Logo</a>
<ul id="nav-mobile" class="right 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>
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>
You can add icons into links. For icon only links you don't need any additional class. Just pop the i
tag in and it will work.
<nav>
<div class="nav-wrapper">
<div class="col s12">
<a href="#!" class="brand-logo">Logo</a>
<ul class="side-nav">
<li><a href="sass.html"><i class="mdi-action-search"></i></a></li>
<li><a href="components.html"><i class="mdi-action-view-module"></i></a></li>
<li><a href="javascript.html"><i class="mdi-navigation-refresh"></i></a></li>
<li><a href="mobile.html"><i class="mdi-navigation-more-vert"></i></a></li>
</ul>
</div>
</div>
</nav>
For adding an icon to a text link you need to add either a left
or right
class to the icon depending on where you want the icon to be.
<nav>
<div class="nav-wrapper">
<div class="col s12">
<a href="#!" class="brand-logo">Logo</a>
<ul class="side-nav">
<li><a href="sass.html"><i class="mdi-action-search left"></i>Link with Left Icon</a></li>
<li><a href="components.html"><i class="mdi-action-view-module right"></i>Link with Right Icon</a></li>
</ul>
</div>
</div>
</nav>
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 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.
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 m6">
<div class="card blue-grey darken-1">
<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.</p>
</div>
<div class="card-action">
<a href="#">This is a link</a>
<a href='#'>This is a link</a>
</div>
</div>
</div>
</div>
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 m7">
<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>
The Small Card limits the height of the card. We provide this as a utility class for you to easily ensure equal card size.
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">
<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>
</div>
For a simpler card with less markup, try using a card panel which just has padding and a shadow effect
<div class="row">
<div class="col s12 m5">
<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. I am similar to what is called a panel in other frameworks.
</span>
</div>
</div>
</div>
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 allow you to group list objects together.
<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>
<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>
<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>
<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 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.
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>
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 |
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 |
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 |
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 |