blob: ac3535fb32b45e864472f54045daf987351c476f [file] [log] [blame]
<!doctype html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="description" content="A front-end template that helps you build fast, modern mobile web apps.">
<meta name="viewport" content="width=device-width, initial-scale=1.0, minimum-scale=1.0">
<title>Material Design Lite</title>
<!-- Add to homescreen -->
<link rel="manifest" href="manifest.json">
<!-- Fallback to homescreen for Chrome <39 on Android -->
<meta name="mobile-web-app-capable" content="yes">
<meta name="application-name" content="Material Design Lite">
<link rel="icon" sizes="192x192" href="../assets/android-desktop.png">
<!-- Add to homescreen for Safari on iOS -->
<meta name="apple-mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-status-bar-style" content="black">
<meta name="apple-mobile-web-app-title" content="Material Design Lite">
<link rel="apple-touch-icon" href="../assets/ios-desktop.png">
<!-- TODO: Tile icon for Win8 (144x144 + tile color) -->
<!-- <meta name="msapplication-TileImage" content="images/touch/ms-touch-icon-144x144-precomposed.png"> -->
<!-- <meta name="msapplication-TileColor" content="#3372DF"> -->
<meta name="theme-color" content="#263238">
<link rel="shortcut icon" href="../assets/favicon.png">
<!-- SEO: If your mobile URL is different from the desktop URL, add a canonical link to the desktop page https://developers.google.com/webmasters/smartphone-sites/feature-phones -->
<!--
<link rel="canonical" href="http://www.example.com/">
-->
<!-- Page styles -->
<link rel="stylesheet" href="../assets/prism-default.css">
<link rel="stylesheet" href="../material.min.css">
<link rel="stylesheet" href="../assets/main.css">
<!-- Fonts -->
<link href='https://fonts.googleapis.com/css?family=Roboto:regular,bold,italic,thin,light,bolditalic,black,medium&amp;lang=en' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
</head>
<body class="faq">
<!-- Google Analytics: change UA-XXXXX-X to be your site's ID -->
<script>
// if (document.location.hostname !== 'localhost' &&
// document.location.hostname !== '127.0.0.1' &&
// document.location.hostname.search('.corp.') === -1) {
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','//www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-25993200-9', 'auto');
// If a specific component page is loaded directly we'll attribute the
// page view to the specific component's page
if (window.location.pathname.indexOf('/components/') !== -1 &&
window.location.hash.indexOf('-section') !== -1) {
ga('send', 'pageview', '/components/' +
window.location.hash.split('#')[1].split('/')[0]);
} else {
ga('send', 'pageview');
}
// }
// Setup error tracking before anything else runs.
window.onerror = function(message, file, lineNumber, columnNumber, error) {
try {
if (error !== undefined) {
message = error.stack;
}
ga('send', 'event', 'error', file + ':' + lineNumber, String(message));
} catch (e) {
// no-op
}
};
</script>
<div class="image-preloader"></div>
<div class="docs-layout mdl-layout mdl-js-layout">
<header class="docs-layout-header mdl-layout__header">
<div class="mdl-layout__header-row">
<span class="docs-layout-title mdl-layout-title"><a href="../">Material<br>Design<br>Lite</a></span>
</div>
<div class="docs-navigation__container">
<nav class="docs-navigation mdl-navigation">
<a href="../index.html" class="mdl-navigation__link about">About</a>
<a href="../started/index.html" class="mdl-navigation__link started">Getting Started</a>
<a href="../templates/index.html" class="mdl-navigation__link templates">Templates</a>
<a href="../components/index.html" class="mdl-navigation__link components">Components</a>
<a href="../styles/index.html" class="mdl-navigation__link styles">Styles</a>
<a href="../customize/index.html" class="mdl-navigation__link customize">Customize</a>
<a href="../showcase/index.html" class="mdl-navigation__link showcase">Showcase</a>
<a href="../faq/index.html" class="mdl-navigation__link faq">FAQ</a>
<div class="spacer"></div>
<a href="https://github.com/google/material-design-lite" class="mdl-navigation__link mdl-navigation__link--icon github"><i class="material-icons">link</i><span>GitHub</span></a>
<a href="../started/index.html#download" class="mdl-navigation__link mdl-navigation__link--icon download">
<i class="material-icons">&#xE2C4;</i><span>Download</span>
<button class="mdl-button mdl-js-button mdl-js-ripple-effect mdl-button--fab mdl-button--mini-fab mdl-color--lime-A200">
<i class="material-icons">&#xE2C4;</i>
</button>
</a>
</nav>
</div>
<i class="material-icons scrollindicator scrollindicator--right">&#xE315;</i>
<i class="material-icons scrollindicator scrollindicator--left">&#xE314;</i>
</header>
<main class="docs-layout-content mdl-layout__content mdl-color-text--grey-600">
<div class="content mdl-grid mdl-grid--no-spacing" id="content">
<div class="subpageheader mdl-cell--12-col">FAQ</div>
<div class="docs-text-styling">
<section id="include">
<p><div class="docs-text-styling">
<section class="docs-toc">
<h3>Contents</h3>
<nav class="section-content">
<ul>
<li><a href="#where-should-i-use">Where should I use Material Design Lite (MDL)?</a></li>
<li><a href="#css-naming-conventions">What CSS naming conventions does MDL use?</a></li>
<li><a href="#progressive-enhancement">Does MDL support progressive enhancement?</a></li>
<li><a href="#browser-support">Which browsers does MDL support?</a></li>
<li><a href="#polymer">Does MDL play nicely with Polymer?</a></li>
<li><a href="#bootstrap">Is MDL comparable to Bootstrap?</a></li>
<li><a href="#existing-implementations">How does it compare to existing Material CSS implementations?</a></li>
<li><a href="#options-available">Should I use the minified, CDN or Sass versions of MDL?</a></li>
<li><a href="#official-cdn">What service does the official CDN use?</a></li>
<li><a href="#web-starter-kit">How does MDL relate to Web Starter Kit?</a></li>
<li><a href="#mdl-in-production">Do any Google properties use MDL in production?</a></li>
<li><a href="#mdl-showcase">Is there a showcase available of sites using MDL?</a></li>
<li><a href="#individual-components">Can I build or use individual MDL components (e.g a button)?</a></li>
<li><a href="#report-an-issue">How do I report a problem with MDL?</a></li>
<li><a href="#getting-help">Where can I get help with questions about using MDL?</a>
<li><a href="#slide-decks">Are there any presentations or slide-decks available on MDL?</a></li>
<li><a href="#new-components">Can I request or contribute components to MDL?</a></li>
<li><a href="#alternate-preprocessor">Will MDL support non-Sass preprocessors?</a></li>
<li><a href="#issue-updates">How do I keep updated with issues I&#39;m interested in?</a></li>
</ul>
</nav>
</section></p>
<h2 id="where-should-i-use">Where should I use Material Design Lite (MDL)?</h2>
<p>If you’re interested in a <a href="https://www.google.com/design/spec/material-design/introduction.html">Material Design</a> experience using vanilla Web technologies like CSS, JavaScript and HTML, MDL might be a useful option to consider. We optimise for websites heavy on content, such as marketing pages, articles, blogs and general web content that isn’t particularly app-y. If you just want to pick some colors, customise a template and ship a Material experience, we try to help make that process simpler.</p>
<p>Whilst there exist several community-driven options for Material Design, our experience has shown that there are several gaps in the Material specification when it comes to the web. Rather than guessing how these gaps should be filled (something we know the community has struggled with), we’ve opted for a close collaboration with the Material Design team to provide a Material library that is both spec compatible for today and provides guidance on aspects of the spec still being evolved.</p>
<h2 id="css-naming-conventions">What CSS naming conventions does MDL use?</h2>
<p>MDL was written using <a href="https://en.bem.info/method/">BEM</a>. BEM stands for Block, Element, Modifier. It is a method used to construct CSS class-names so they are consistent, isolated, and expressive. A few good resources for learning more about BEM methods are:</p>
<ul>
<li><a href="http://csswizardry.com/2013/01/mindbemding-getting-your-head-round-bem-syntax/">CSSWizardry</a></li>
<li><a href="https://css-tricks.com/bem-101/">CSS-Tricks</a></li>
<li><a href="http://www.smashingmagazine.com/2012/04/16/a-new-front-end-methodology-bem/">Smashing Magazine</a></li>
</ul>
<p>These are great resources that simplify the data needed to understand BEM. If you want to read the methodology from the inventors, <a href="https://en.bem.info/">Yandex provides the resource</a>. This reference goes way beyond just the CSS and into the full JavaScript setup they use as well.</p>
<p>Our <a href="https://github.com/google/material-design-lite/wiki/Understanding-BEM">wiki</a> includes a section on the namespacing used for MDL specifically.</p>
<h2 id="progressive-enhancement">Does MDL support progressive enhancement?</h2>
<p>MDL’s components were designed from the ground up with progressive enhancement in mind. We attempt to build on native HTML elements as much as possible, relying on JavaScript where absolutely necessary for ‘enhancements’.</p>
<p>One example of this is our ‘Text only’ Material Design template. Switching JavaScript off in Chrome DevTools, the page still renders CSS fine:</p>
<p><img src="../assets/template-preview.png" alt="A preview of a template rendering in an older version of IE"></p>
<p>This allows us to render important content first and then ‘enhance’ the page with things like Material Design button ripples and pop-out menu components.</p>
<p>MDL will degrade to a no-JavaScript experience on IE9, though you can pull in polyfills for an enhanced experience. If components require JavaScript to function, such as Layout, these will otherwise need to be planned for in development. IE10+ and evergreen browsers are fully supported. For more details on our browser support, see ‘Which browsers does MDL support?’.</p>
<p>Note: the MDL site itself attempts to use progressive enhancement where possible. We do however have aspects of the site (e.g our component page) that rely more heavily on JS. The MDL Templates and Components otherwise try to render as well as they can with JS off.</p>
<h2 id="browser-support">Which browsers does MDL support?</h2>
<p>The complete MDL experience should work in the last two versions of all evergreen browsers, whilst we gracefully degrade to CSS-only in browsers like IE9 that don’t pass our <a href="https://github.com/google/material-design-lite/blob/9e6c6ec9237715bfa04b307f786e9073f943e6be/src/mdlComponentHandler.js#L333">Cutting-the-mustard</a> test.</p>
<p>Our <a href="https://github.com/google/material-design-lite/#browser-support">browser compatibility matrix</a> has the most up to date information on the browsers we officially support. For components, at minimum we require support for <a href="https://developer.mozilla.org/en-US/docs/Web/API/Document/querySelector">querySelector</a>, <a href="https://developer.mozilla.org/en-US/docs/Web/API/Element/classList">classList</a> and <a href="https://developer.mozilla.org/en-US/docs/Web/API/EventTarget/addEventListener">addEventListener</a>, which can be <a href="https://github.com/Modernizr/Modernizr/wiki/HTML5-Cross-Browser-Polyfills">polyfilled</a> as needed. Our Templates will work in IE10+, primarily due to our use of Flexbox.</p>
<p>The polyfills that we’re currently using for the MDL site to improve support in oldIE are the following:</p>
<pre><code class="language-markup">&lt;!--[if IE]&gt;
&lt;script src=&quot;//cdnjs.cloudflare.com/ajax/libs/es5-shim/4.2.0/es5-shim.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;//cdnjs.cloudflare.com/ajax/libs/classlist/2014.01.31/classList.min.js&quot;&gt;&lt;/script&gt;
&lt;script src=&quot;//cdnjs.cloudflare.com/ajax/libs/selectivizr/1.0.2/selectivizr-min.js&quot;&gt;&lt;/script&gt;
&lt;![endif]--&gt;
</code></pre>
<p>IE10 standards mode <a href="http://bit.ly/1dypChT">removes</a> support for conditional comments, so the above will only get interpreted by older versions of IE, such as IE9.</p>
<p>We do not officially support IE8. That said, some components will degrade using the CSS-only (or native HTML element) experience there better than others. For example:</p>
<p><strong>Buttons</strong></p>
<p><img alt="Buttons rendering in IE8" src="../assets/button_degradation.png"></p>
<p><strong>Tables</strong></p>
<p><img alt="Tables gracefully degrading in IE8" src="../assets/table_degradation.png"></p>
<p><strong>Sliders (degrade to input fields)</strong></p>
<p><img alt="Sliders degrading in IE8 to input fields" src="../assets/sliders_degradation.png"></p>
<h2 id="polymer">Does MDL play nicely with Polymer? Is it a replacement for the Paper elements?</h2>
<p>MDL focuses on delivering an experience that is optimised for static content sites, like blogs, marketing pages and more traditional text-based web pages.</p>
<p>The <a href="https://elements.polymer-project.org/browse?package=paper-elements">Paper</a> elements built with <a href="http://polymer-project.org">Polymer</a> are fully encapsulated components that can be used individually or composed together to create a material design-style site, and support more advanced user interaction.</p>
<p>That said, MDL can be used alongside the Polymer element counterparts. Polymer uses the power of Web Components to encapsulate the designs used for those components. MDL does not affect the styling within custom components.</p>
<h2 id="bootstrap">Is MDL comparable to Bootstrap?</h2>
<p><em>If we&#39;re using it instead of Bootstrap, can we expect the same level of component styling?</em></p>
<p>Material Design can replace many parts of Bootstrap. However, it does not intend to feature-match everything Bootstrap offers. Instead MDL intends to implement the components specified by the Material Design specification. This allows it to provide the most comprehensive and accurate solution available.</p>
<h2 id="existing-implementations">How does it compare to existing Material CSS implementations?</h2>
<p><em>Materialize, Material Bootstrap, etc</em></p>
<p>We think the community does a great job offering their own take on how Material Design should be implemented for CSS libraries.</p>
<p>That said, the large, diverse number of implementations available are often quite liberal with their interpretation of the spec (not their fault!) and their opinions don’t always reflect what the Material Design team would consider ‘correct’. MDL was developed in close collaboration with the Material Design and Chrome UX teams and undergoes regular reviews for spec compliance. When we run into an area of the spec that isn’t yet fully fleshed out, MDL is able to offer reviewed opinions on how these should be solved in a way that tries to stay true to Material Design.</p>
<h2 id="options-available">Should I use the minified, CDN or Sass versions of MDL?</h2>
<p><em>Should I build my own version or download the minified version or simply refer to CDN objects?</em></p>
<p><strong>Minified: </strong>If it’s your first time using MDL, we recommend downloading one of the default packages from the ‘Getting Started’ page that include a minified version of our CSS/JS and optionally our pre-made Templates.</p>
<p><strong>CDN: </strong>If you’re just prototyping or want to avoid hosting your own copy of the MDL CSS and JS files, you can use our CDN to pull down a heavily edge-cached version.</p>
<p><strong>Customiser: </strong>If you’re creating a new site with MDL and are using a custom color scheme, we recommend downloading the default package then generating a custom build using the Customiser tool. You can use this to override the material.min.css file for your own needs.</p>
<p><strong>Sass: </strong>If you would prefer to go all in, you can get the Sass version of MDL, which includes our original sources, docs and templates. This version allows maximum customisation using CSS variables and the rest of the Sass goodness you’re used to.</p>
<h2 id="official-cdn">What service does the official CDN use?</h2>
<p>The official CDN is hosted using <a href="https://cloud.google.com/storage/">Google Cloud Storage</a>.</p>
<h2 id="web-starter-kit">How does MDL relate to Web Starter Kit?</h2>
<p>MDL is an evolutionary step from the styleguide provided in Web Starter Kit. The more <a href="https://developers.google.com/web/tools/starter-kit/">Web Starter Kit</a> was used, the more it became clear that many developers simply wanted Material Design in their sites.</p>
<p>The WSK Styleguide also did not align to Material Design fully, it was simply based on the idea. From the WSK project, MDL was born to try and fill this need for developers. In the process making the implementation as faithful as possible to the specification.</p>
<h2 id="mdl-in-production">Do any Google properties use MDL in production?</h2>
<p>MDL is used in production by a few different Google properties. These use an older, incomplete version but demonstrate what deployed experiences can look like. Examples include:</p>
<p>The <a href="https://developers.google.com/mobile/add">Google Services</a> site:</p>
<p><img src="../assets/google-services.png" alt="Google Services site screenshot"></p>
<p><a href="http://www.richmediagallery.com/">RichMediaGallery</a> by DoubleClick:</p>
<p><img src="../assets/rich-media-gallery.png" alt="RichMediaGallery screenshot"></p>
<p>and is being used by many other teams on upcoming projects, including Google Shopping.</p>
<h2 id="mdl-showcase">Is there a showcase available of sites using MDL?</h2>
<p>See the <a href="/showcase/">Showcase</a> for an early list of Google sites using MDL in production. </p>
<p>To request your site be added, please file a <a href="https://github.com/Google/material-design-lite/issues/new?title=Site%20Showcase%20Request&amp;body=Please%20include:%0A*%20Description%0A*%20Primary%20Link%0A*%20Screenshot">new issue</a> on our GitHub issue tracker. The issue should include a link, a description of the site and a suggested screenshot.</p>
<p>We hope to add a properly polished showcase to the site in the near future.</p>
<h2 id="individual-components">Can I build or use individual MDL components (e.g a button)?</h2>
<p>For V1 of MDL we are focused on the use-case of folks who are likely to need a few different components on their page and will want to include most of the MDL library. This means that support and docs around just plucking single components on their own is minimal.</p>
<p>That said, if you need to generate a build using just a single (or smaller number of) components, you will need to use Gulp with our Sass build. You can <a href="https://github.com/google/material-design-lite/blob/master/src/material-design-lite.scss">comment out</a> those components you don’t need in material-design-lite.scss, <a href="https://github.com/google/material-design-lite/blob/master/gulpfile.js#L191">comment out</a> the scripts you don’t need in the Gulpfile and then run <code>gulp</code> to create your build.</p>
<p>We have talked about offering up components in a more modular fashion but will be exploring this in the post V1 timeline.</p>
<h2 id="report-an-issue">How do I report an issue with MDL?</h2>
<p>Please let us know about any problems by opening an issue on our <a href="https://github.com/google/material-design-lite/issues">GitHub repo</a>.</p>
<h2 id="getting-help">Where can I get help with questions about using MDL?</h2>
<p>We encourage the MDL user and developer community to ask questions, and help answer questions, on <a href="http://stackoverflow.com">Stack Overflow</a>, using the <code>Material-Design-Lite</code> tag.</p>
<h2 id="slide-decks">Are there any presentations or slide-decks available on MDL?</h2>
<p>We did a preview talk at Google I/O 2015 on MDL and the slides for that talk can be found on <a href="https://speakerdeck.com/gauntface/material-design-lite-preview">SpeakerDeck</a>.</p>
<h2 id="new-components">Can I request or contribute components to MDL?</h2>
<p>Sure! There may be components or templates you would like to see implemented in MDL that we don&#39;t yet provide. Please feel free to propose them on the <a href="https://github.com/Google/material-design-lite/issues/new?title=%5BComponent%20Request%5D%20%7BComponent%7D&body=Please%20include:%0A*%20Description%0A*%20Material%20Design%20Spec%20link%0A*%20Use%20Case%28s%29">Issue Tracker</a>. While we can&#39;t guarantee we&#39;ll be able to implement them all, we will consider requests and review them at regular intervals.</p>
<h2 id="alternate-preprocessor">Will MDL support non-Sass preprocessors?</h2>
<p><em>Stylus, Less, PostCSS, etc.</em></p>
<p>MDL is implemented using Sass and there are no current plans to change this. If you wish to maintain a port to another preprocessor, you are more than welcome to.</p>
<h2 id="issue-updates">How do I keep updated with issues I&#39;m interested in?</h2>
<p>Watching the whole repository can introduce a lot of extra noise in your stream. To keep updated with just issues you are interested in you only need to subscribe to that issue. This is done on the issue page by clicking the &quot;Subscribe&quot; button in the right hand sidebar.</p>
<p><img alt="Subscribing to a single issue" src="../assets/faq/subscribe-single-issue.png"></p>
</section>
</div>
</div>
<section class="docs-text-styling download mdl-color--grey-800">
<a href="../started/index.html#download" class="mdl-color-text--grey-50">Download Kit</a>
</section>
<footer class="docs-text-styling docs-footer mdl-mini-footer mdl-color--grey-900">
<ul>
<li class="mdl-mini-footer--social-btn">
<a href="https://twitter.com/googledesign" class="social-btn social-btn__twitter" role="button" title="Twitter"></a>
</li>
<li class="mdl-mini-footer--social-btn">
<a href="https://github.com/google/material-design-lite" class="social-btn social-btn__github" role="button" title="GitHub"></a>
</li>
<li class="mdl-mini-footer--social-btn">
<a href="https://plus.google.com/+googledesign" class="social-btn social-btn__gplus" role="button" title="Google+"></a>
</li>
</ul>
<ul class="docs-link-list">
<li><a class="mdl-color-text--grey-600" href="https://developers.google.com/web/starter-kit/">Web Starter Kit</a></li>
<li><a class="mdl-color-text--grey-600" href="https://github.com/google/material-design-lite/issues">Help</a></li>
</ul>
</footer>
</main>
</div>
<!-- IE Compatibility shims -->
<!--[if lt IE 9]>
<script src="//cdnjs.cloudflare.com/ajax/libs/html5shiv/3.7.2/html5shiv.min.js""></script>
<![endif]-->
<!--[if IE]>
<script src="//cdnjs.cloudflare.com/ajax/libs/es5-shim/4.1.7/es5-shim.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/classlist/2014.01.31/classList.min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/selectivizr/1.0.2/selectivizr-min.js"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/flexie/1.0.3/flexie.min.js"></script>
<link href="../assets/ie.css" rel="stylesheet">
<![endif]-->
<!-- end shims -->
<!-- Material Design Lite -->
<script src="../material.min.js"></script>
<!-- Add Copy-to-CodePen buttons to code blocks -->
<script src="../assets/codepen.js"></script>
<!-- Enable Prism syntax highlighting -->
<script src="../assets/prism.js"></script>
<script src="../assets/prism-markup.min.js"></script>
<script src="../assets/prism-javascript.min.js"></script>
<script src="../assets/prism-css.min.js"></script>
<script src="../assets/prism-bash.min.js"></script>
<script src="../assets/main.js"></script>
<!-- Built with love using Material Design Lite -->
</body>
</html>