Material Components for the web (MDC Web) helps developers execute Material Design. Developed by a core team of engineers and UX designers at Google, these components enable a reliable development workflow to build beautiful and functional web projects.
MDC Web strives to seamlessly incorporate into a wider range of usage contexts, from simple static websites to complex, JavaScript-heavy applications to hybrid client/server rendering systems. In short, whether you're already heavily invested in another framework or not, it should be easy to incorporate Material Components into your site in a lightweight, idiomatic fashion.
Material Components for the web is the successor to Material Design Lite. In addition to implementing the Material Design guidelines, it provides more flexible theming customization, not only in terms of color, but also typography, shape, states, and more. It is also specifically architected for adaptability to various major web frameworks.
NOTE: Material Components Web follows semver and is still in version 0.x, which means it is regularly subject to breaking changes. We typically follow a 2-week release schedule which includes one minor release per month with breaking changes, and intermediate patch releases with bug fixes.
- Getting Started Guide
- Demos
- MDC Web on other frameworks
- Contributing
- Material Design Guidelines (external site)
- Supported browsers
- All Components
- Changelog
- Roadmap
<!-- Required styles for MDC Web -->
<link rel="stylesheet" href="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.css">
<!-- Render textfield component -->
<div class="mdc-text-field">
<input type="text" id="my-text-field" class="mdc-text-field__input">
<label class="mdc-floating-label" for="my-text-field">Hint text</label>
<div class="mdc-line-ripple"></div>
</div>
<!-- Required MDC Web JavaScript library -->
<script src="https://unpkg.com/material-components-web@latest/dist/material-components-web.min.js"></script>
<!-- Instantiate single textfield component rendered in the document -->
<script>
mdc.textField.MDCTextField.attachTo(document.querySelector('.mdc-text-field'));
</script>
Please see quick start demo on codepen for full example.
Install textfield node module to your project.
npm install @material/textfield
Sample usage of text field component. Please see MDC Textfield component page for more options.
<div class="mdc-text-field">
<input type="text" id="my-text-field" class="mdc-text-field__input">
<label class="mdc-floating-label" for="my-text-field">Hint text</label>
<div class="mdc-line-ripple"></div>
</div>
Load styles required for text field component.
@import "@material/textfield/mdc-text-field";
Import MDCTextField
module to instantiate text field component.
import {MDCTextField} from '@material/textfield/index';
const textField = new MDCTextField(document.querySelector('.mdc-text-field'));
This'll initialize text field component on a single .mdc-text-field
element.
Please see quick start demo on stackblitz for full example.
Please see getting started guide for pointers on how to configure webpack to bundle JavaScript & CSS.
We're constantly trying to improve our components. If Github Issues don't fit your needs, then please visit us on our Discord Channel.
Third-party services that we use and are thankful to:
- Travis CI for CI.
- Sauce Labs for unit testing.
- CrossBrowserTesting for screenshot testing.