- 组件
- Material Design Lite (MDL) 是一个基于 Google 材料设计理念的 Web 开发人员组件库:“一种为用户提供的视觉语言,将优秀设计的经典原则与技术和科学的创新和可能性相结合。” 了解材料设计的目标和原则对于正确使用 Material Design Lite 组件至关重要。如果您尚未阅读材料设计简介,则应在尝试使用这些组件之前阅读。
徽章
UI 元素的小型状态描述符。
<!-- Number badge on icon --> <div class="material-icons mdl-badge mdl-badge--overlap" data-badge="1">account_box</div>
<style></style><!-- Icon badge on icon --> <div class="material-icons mdl-badge mdl-badge--overlap" data-badge="♥">account_box</div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Number badge --> <span class="mdl-badge" data-badge="4">Inbox</span>
<style></style><!-- Icon badge --> <span class="mdl-badge" data-badge="♥">Mood</span>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的**徽章**组件是一个屏幕上的通知元素。徽章通常由一个小圆圈组成,其中包含数字或其他字符,并显示在另一个对象的附近。徽章既可以是通知用户与对象关联的其他项目,也可以指示项目的数量。
您可以使用徽章以不显眼的方式吸引用户注意他们可能没有注意到的项目,或强调项目可能需要他们的注意。例如
- “新消息”通知后面可能会跟着一个包含未读消息数量的徽章。
- “购物车中有未购买的商品”提醒可能会包含一个显示购物车中商品数量的徽章。
- “加入讨论!”按钮可能会有一个附带的徽章,指示当前参与讨论的用户数量。
徽章几乎总是放置在链接附近,以便用户可以方便地访问徽章指示的其他信息。但是,根据意图,徽章本身可能是也可能不是链接的一部分。
徽章是用户界面中的一个新功能,为用户提供视觉线索以帮助他们发现其他相关内容。因此,其设计和使用是整体用户体验中的一个重要因素。
要包含 MDL **徽章**组件
1. 编写一个<a>
(锚点/链接)或<span>
元素。包括任何所需的属性和内容。
<a href="#">This link has a badge.</a>
2. 使用class
属性将一个或多个 MDL 类(用空格分隔)添加到元素中。
<a href="#" class="mdl-badge">This link has a badge.</a>
3. 添加一个data-badge
属性和徽章的带引号的字符串值。
<a href="#" class="mdl-badge" data-badge="5">This link has a badge.</a>
徽章组件已准备就绪。
**注意:**由于徽章组件尺寸较小,因此
data-badge
值通常应包含 1 到 3 个字符。超过三个字符不会导致错误,但某些字符可能会超出徽章范围,因此难以或无法看到。data-badge
属性的值在徽章中居中。
示例
链接内的徽章。
<a href="#" class="mdl-badge" data-badge="7">This link contains a badge.</a>
链接附近但未包含在链接中的徽章。
<a href="#">This link is followed by a badge.</a>
<span class="mdl-badge" data-badge="12"></span>
链接内的一个徽章,其字符过多,无法容纳在徽章内。
<a href="#" class="mdl-badge" data-badge="123456789">
This badge has too many characters.</a>
链接内的一个徽章,没有徽章背景颜色。
<a href="#" class="mdl-badge mdl-badge--no-background" data-badge="123">
This badge has no background color.</a>
配置选项
MDL CSS 类对徽章应用各种预定义的视觉增强效果。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-badge |
将徽章定义为 MDL 组件 | 在 span 或链接上都需要 |
mdl-badge--no-background |
对徽章应用开环效果 | 可选 |
mdl-badge--overlap |
使徽章与容器重叠 | 可选 |
data-badge="value" |
为徽章分配字符串值 | 不是类,而是单独的属性;在 span 或链接上都需要 |
卡片
包含数据的独立纸张。
欢迎
<!-- Wide card with share menu button --> <style> .demo-card-wide.mdl-card { width: 512px; } .demo-card-wide > .mdl-card__title { color: #fff; height: 176px; background: url('../assets/demos/welcome_card.jpg') center / cover; } .demo-card-wide > .mdl-card__menu { color: #fff; } </style> <div class="demo-card-wide mdl-card mdl-shadow--2dp"> <div class="mdl-card__title"> <h2 class="mdl-card__title-text">Welcome</h2> </div> <div class="mdl-card__supporting-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Mauris sagittis pellentesque lacus eleifend lacinia... </div> <div class="mdl-card__actions mdl-card--border"> <a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect"> Get Started </a> </div> <div class="mdl-card__menu"> <button class="mdl-button mdl-button--icon mdl-js-button mdl-js-ripple-effect"> <i class="material-icons">share</i> </button> </div> </div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Square card --> <style> .demo-card-square.mdl-card { width: 320px; height: 320px; } .demo-card-square > .mdl-card__title { color: #fff; background: url('../assets/demos/dog.png') bottom right 15% no-repeat #46B6AC; } </style> <div class="demo-card-square mdl-card mdl-shadow--2dp"> <div class="mdl-card__title mdl-card--expand"> <h2 class="mdl-card__title-text">Update</h2> </div> <div class="mdl-card__supporting-text"> Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aenan convallis. </div> <div class="mdl-card__actions mdl-card--border"> <a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect"> View Updates </a> </div> </div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Image card --> <style> .demo-card-image.mdl-card { width: 256px; height: 256px; background: url('../assets/demos/image_card.jpg') center / cover; } .demo-card-image > .mdl-card__actions { height: 52px; padding: 16px; background: rgba(0, 0, 0, 0.2); } .demo-card-image__filename { color: #fff; font-size: 14px; font-weight: 500; } </style> <div class="demo-card-image mdl-card mdl-shadow--2dp"> <div class="mdl-card__title mdl-card--expand"></div> <div class="mdl-card__actions"> <span class="demo-card-image__filename">Image.jpg</span> </div> </div>
<style></style><!-- Event card --> <style> .demo-card-event.mdl-card { width: 256px; height: 256px; background: #3E4EB8; } .demo-card-event > .mdl-card__actions { border-color: rgba(255, 255, 255, 0.2); } .demo-card-event > .mdl-card__title { align-items: flex-start; } .demo-card-event > .mdl-card__title > h4 { margin-top: 0; } .demo-card-event > .mdl-card__actions { display: flex; box-sizing:border-box; align-items: center; } .demo-card-event > .mdl-card__actions > .material-icons { padding-right: 10px; } .demo-card-event > .mdl-card__title, .demo-card-event > .mdl-card__actions, .demo-card-event > .mdl-card__actions > .mdl-button { color: #fff; } </style> <div class="demo-card-event mdl-card mdl-shadow--2dp"> <div class="mdl-card__title mdl-card--expand"> <h4> Featured event:<br> May 24, 2016<br> 7-11pm </h4> </div> <div class="mdl-card__actions mdl-card--border"> <a class="mdl-button mdl-button--colored mdl-js-button mdl-js-ripple-effect"> Add to Calendar </a> <div class="mdl-layout-spacer"></div> <i class="material-icons">event</i> </div> </div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的**卡片**组件是一个用户界面元素,表示包含相关数据(例如照片、一些文本和链接)的虚拟纸张,这些数据都与单个主题相关。
卡片是一种方便的方式,用于以连贯的方式显示由不同类型对象组成的相关内容。它们也非常适合呈现大小或支持的操作可能差异很大的相似对象,例如带有可变长度标题的照片。卡片的宽度固定,高度根据内容而变化。
卡片是用户界面中一个相当新的功能,允许用户访问更复杂和详细的信息。它们的设计和使用是整体用户体验的重要因素。有关详细信息,请参阅卡片组件的Material Design 规范页面。
要包含 MDL 卡片组件
1. 编写一个 <div>
元素;这是“外部”容器,用于容纳所有卡片的内容。
<div>
</div>
2. 在 div 内部,编写一个或多个“内部”div,每个 div 对应一个所需的内容块。包含标题、图像、一些文本和操作栏的卡片将包含四个“内部”div,它们都是兄弟元素。
<div>
<div>
...
</div>
<div>
...
</div>
<div>
...
</div>
<div>
...
</div>
</div>
3. 使用 class
属性,将一个或多个 MDL 类(用空格分隔)添加到“外部”div 和“内部”div(取决于其预期用途)。
<div class="mdl-card">
<div class="mdl-card__title">
...
</div>
<div class="mdl-card__media">
...
</div>
<div class="mdl-card__supporting-text">
...
</div>
<div class="mdl-card__actions">
...
</div>
</div>
4. 将内容添加到每个“内部”div 中,同样取决于其预期用途,使用标准 HTML 元素,并可选择添加其他 MDL 类。
<div class="mdl-card">
<div class="mdl-card__title">
<h2 class="mdl-card__title-text">title Text Goes Here</h2>
</div>
<div class="mdl-card__media">
<img src="photo.jpg" width="220" height="140" border="0" alt="" style="padding:20px;">
</div>
<div class="mdl-card__supporting-text">
This text might describe the photo and provide further information, such as where and
when it was taken.
</div>
<div class="mdl-card__actions">
<a href="(URL or function)">Related Action</a>
</div>
</div>
卡片组件已准备好使用。
示例
带有标题、图像、文本和操作的卡片(无阴影)。
<div class="mdl-card">
<div class="mdl-card__title">
<h2 class="mdl-card__title-text">Auckland Sky Tower<br>Auckland, New Zealand</h2>
</div>
<div class="mdl-card__media">
<img src="skytower.jpg" width="173" height="157" border="0" alt=""
style="padding:10px;">
</div>
<div class="mdl-card__supporting-text">
The Sky Tower is an observation and telecommunications tower located in Auckland,
New Zealand. It is 328 metres (1,076 ft) tall, making it the tallest man-made structure
in the Southern Hemisphere.
</div>
<div class="mdl-card__actions">
<a href="http://en.wikipedia.org/wiki/Sky_Tower_%28Auckland%29">Wikipedia entry</a>
</div>
</div>
带有图像、标题和文本的卡片(3 级阴影)。
<div class="mdl-card mdl-shadow--4dp">
<div class="mdl-card__media"><img src="skytower.jpg" width="173" height="157" border="0"
alt="" style="padding:10px;">
</div>
<div class="mdl-card__supporting-text">
Auckland Sky Tower, taken March 24th, 2014
</div>
<div class="mdl-card__supporting-text">
The Sky Tower is an observation and telecommunications tower located in Auckland,
New Zealand. It is 328 metres (1,076 ft) tall, making it the tallest man-made structure
in the Southern Hemisphere.
</div>
</div>
配置选项
MDL CSS 类将各种预定义的视觉和行为增强功能应用于卡片。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-card |
将 div 元素定义为 MDL 卡片容器 | “外部”div 上需要 |
mdl-card--border |
在应用到的卡片部分添加边框 | 用于“内部”div |
mdl-shadow--2dp 到 mdl-shadow--16dp |
为卡片分配可变的阴影深度(2、3、4、6、8 或 16) | 可选,位于“外部”div 上;如果省略,则没有阴影 |
mdl-card__title |
将 div 定义为卡片标题容器 | “内部”标题 div 上需要 |
mdl-card__title-text |
为卡片标题分配相应的文本特征 | 标题 div 内的头部标签 (H1 - H6) 上需要 |
mdl-card__subtitle-text |
为卡片副标题分配文本特征 | 可选。应为标题元素的子元素。 |
mdl-card__media |
将 div 定义为卡片媒体容器 | “内部”媒体 div 上需要 |
mdl-card__supporting-text |
将 div 定义为卡片主体文本容器,并为主体文本分配相应的文本特征 | “内部”主体文本 div 上需要;文本直接位于 div 内部,没有中间容器 |
mdl-card__actions |
将 div 定义为卡片操作容器,并为操作文本分配相应的文本特征 | “内部”操作 div 上需要;内容直接位于 div 内部,没有中间容器 |
mdl-card__menu |
将元素定义为右上角菜单按钮 | 可选。应为 mdl-card 元素的子元素。 |
筹码
以小块的形式表示复杂实体。
<!-- Basic Chip --> <span class="mdl-chip"> <span class="mdl-chip__text">Basic Chip</span> </span>
<style></style><!-- Deletable Chip --> <span class="mdl-chip mdl-chip--deletable"> <span class="mdl-chip__text">Deletable Chip</span> <button type="button" class="mdl-chip__action"><i class="material-icons">cancel</i></button> </span>
<style></style><!-- Button Chip --> <button type="button" class="mdl-chip"> <span class="mdl-chip__text">Button Chip</span> </button>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Contact Chip --> <span class="mdl-chip mdl-chip--contact"> <span class="mdl-chip__contact mdl-color--teal mdl-color-text--white">A</span> <span class="mdl-chip__text">Contact Chip</span> </span>
<style></style><!-- Deletable Contact Chip --> <span class="mdl-chip mdl-chip--contact mdl-chip--deletable"> <img class="mdl-chip__contact" src="/templates/dashboard/images/user.jpg"></img> <span class="mdl-chip__text">Deletable Contact Chip</span> <a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a> </span>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 筹码组件是一个小型交互式元素。筹码通常用于联系人、文本、规则、图标和照片。
要包含 MDL 筹码组件
1. 为筹码创建一个容器元素;通常使用 <span>
和 <div>
,但任何容器元素都应该同样有效。如果需要交互性,请使用 <button>
,或将 tabindex
属性添加到您的容器中。
<span>
</span>
2. 添加文本包装器和 MDL 类。
<span class="mdl-chip">
<span class="mdl-chip__text">Chip Text</span>
</span>
3. 对于可删除筹码,添加删除图标。这可以是 <a>
、<button>
或非交互式标签,如 <span>
。
<span class="mdl-chip">
<span class="mdl-chip__text">Chip Text</span>
<a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a>
</span>
4. 联系人筹码需要在容器中添加 mdl-chip--contact
类,以及另一个用于联系人图标的容器。照片的图标容器通常是 <img>
标签,但其他类型的内容也可以通过一些额外的辅助 CSS 来使用。
<span class="mdl-chip">
<span class="mdl-chip__contact mdl-color--teal mdl-color-text--white">A</span>
<span class="mdl-chip__text">Chip Text</span>
<a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a>
</span>
示例
一个基于按钮的联系人筹码,其联系人图像是一个带有 background-image
的 <span>
。
<style>
.demo-chip .mdl-chip__contact {
background-image: url("./path/to/image");
background-size: cover;
}
</style>
<button class="mdl-chip demo-chip">
<span class="mdl-chip__contact"> </span>
<span class="mdl-chip__text">Chip Text</span>
<a href="#" class="mdl-chip__action"><i class="material-icons">cancel</i></a>
</button>
CSS 类
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-chip |
将元素定义为 MDL 筹码容器 | “外部”容器上需要 |
mdl-chip--contact |
将 MDL 筹码定义为联系人样式筹码 | 可选,位于“外部”容器上 |
mdl-chip__text |
将元素定义为筹码的文本 | “内部”文本容器上需要 |
mdl-chip__action |
将元素定义为筹码的操作 | 如果存在,则“内部”操作容器上需要 |
mdl-chip__contact |
将元素定义为筹码的联系人容器 | 如果“外部”容器上存在 mdl-chip--contact 类,则“内部”联系人容器上需要 |
对话框
用于专用用户输入的模态窗口。
简介
Material Design Lite (MDL) 对话框组件允许验证用户操作、简单的数据输入和警报,以便向用户提供更多信息。
基本用法
要使用对话框组件,您必须使用支持dialog 元素的浏览器。在撰写本文时,只有 Chrome 和 Opera 具有原生支持。对于其他浏览器,您需要包含dialog polyfill或创建您自己的。
一旦您拥有对话框支持,请创建一个对话框元素。使用 polyfill 时,该元素**必须**是 body
元素的子元素。在该容器内,添加一个具有 mdl-dialog__content
类的内容元素。添加您的内容,然后创建一个具有 mdl-dialog__actions
类的操作容器。最后,在标记中,在此容器内添加您的按钮以触发对话框功能。
请记住,操作的顺序会自动反转。Material Design 要求最后一个显示主要(确认)操作。因此,您创建的第一个操作将在操作栏的最后显示。这允许更自然的编码和选项卡排序,同时遵循规范。
请务必为您的操作项添加事件处理程序。创建对话框标记后,将事件侦听器添加到页面以触发对话框显示。
例如
var button = document.querySelector('button');
var dialog = document.querySelector('dialog');
button.addEventListener('click', function() {
dialog.showModal();
/* Or dialog.show(); to show the dialog without a backdrop. */
});
示例
简单对话框
在codepen中查看此示例。
<body>
<button id="show-dialog" type="button" class="mdl-button">Show Dialog</button>
<dialog class="mdl-dialog">
<h4 class="mdl-dialog__title">Allow data collection?</h4>
<div class="mdl-dialog__content">
<p>
Allowing us to collect data will let us get you the information you want faster.
</p>
</div>
<div class="mdl-dialog__actions">
<button type="button" class="mdl-button">Agree</button>
<button type="button" class="mdl-button close">Disagree</button>
</div>
</dialog>
<script>
var dialog = document.querySelector('dialog');
var showDialogButton = document.querySelector('#show-dialog');
if (! dialog.showModal) {
dialogPolyfill.registerDialog(dialog);
}
showDialogButton.addEventListener('click', function() {
dialog.showModal();
});
dialog.querySelector('.close').addEventListener('click', function() {
dialog.close();
});
</script>
</body>
具有全宽操作的对话框
在codepen中查看此示例。
<body>
<button type="button" class="mdl-button show-modal">Show Modal</button>
<dialog class="mdl-dialog">
<div class="mdl-dialog__content">
<p>
Allow this site to collect usage data to improve your experience?
</p>
</div>
<div class="mdl-dialog__actions mdl-dialog__actions--full-width">
<button type="button" class="mdl-button">Agree</button>
<button type="button" class="mdl-button close">Disagree</button>
</div>
</dialog>
<script>
var dialog = document.querySelector('dialog');
var showModalButton = document.querySelector('.show-modal');
if (! dialog.showModal) {
dialogPolyfill.registerDialog(dialog);
}
showModalButton.addEventListener('click', function() {
dialog.showModal();
});
dialog.querySelector('.close').addEventListener('click', function() {
dialog.close();
});
</script>
</body>
CSS 类
块
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-dialog |
定义对话框组件的容器。 | 对话框容器上需要。 |
元素
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-dialog__title |
定义对话框中的标题容器。 | 标题容器上可选。 |
mdl-dialog__content |
定义对话框的内容容器。 | 内容容器上需要。 |
mdl-dialog__actions |
定义对话框中的操作容器。 | 操作容器上需要。 |
修饰符
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-dialog__actions--full-width |
修改每个操作以占用容器的全部宽度。这使每个操作都占用一行。 | 操作容器上可选。 |
布局
构建页面布局的基础。
导航布局
<!-- Uses a transparent header that draws on top of the layout's background --> <style> .demo-layout-transparent { background: url('../assets/demos/transparent.jpg') center / cover; } .demo-layout-transparent .mdl-layout__header, .demo-layout-transparent .mdl-layout__drawer-button { /* This background is dark, so we set text to white. Use 87% black instead if your background is light. */ color: white; } </style> <div class="demo-layout-transparent mdl-layout mdl-js-layout"> <header class="mdl-layout__header mdl-layout__header--transparent"> <div class="mdl-layout__header-row"> <!-- Title --> <span class="mdl-layout-title">Title</span> <!-- Add spacer, to align navigation to the right --> <div class="mdl-layout-spacer"></div> <!-- Navigation --> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> </header> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> <main class="mdl-layout__content"> </main> </div>
<style></style>
<!-- No header, and the drawer stays open on larger screens (fixed drawer). --> <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer"> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> <main class="mdl-layout__content"> <div class="page-content"><!-- Your content goes here --></div> </main> </div>
<style></style>
<!-- Always shows a header, even in smaller screens. --> <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header"> <header class="mdl-layout__header"> <div class="mdl-layout__header-row"> <!-- Title --> <span class="mdl-layout-title">Title</span> <!-- Add spacer, to align navigation to the right --> <div class="mdl-layout-spacer"></div> <!-- Navigation. We hide it in small screens. --> <nav class="mdl-navigation mdl-layout--large-screen-only"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> </header> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> <main class="mdl-layout__content"> <div class="page-content"><!-- Your content goes here --></div> </main> </div>
<style></style>
<!-- The drawer is always open in large screens. The header is always shown, even in small screens. --> <div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer mdl-layout--fixed-header"> <header class="mdl-layout__header"> <div class="mdl-layout__header-row"> <div class="mdl-layout-spacer"></div> <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable mdl-textfield--floating-label mdl-textfield--align-right"> <label class="mdl-button mdl-js-button mdl-button--icon" for="fixed-header-drawer-exp"> <i class="material-icons">search</i> </label> <div class="mdl-textfield__expandable-holder"> <input class="mdl-textfield__input" type="text" name="sample" id="fixed-header-drawer-exp"> </div> </div> </div> </header> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> <main class="mdl-layout__content"> <div class="page-content"><!-- Your content goes here --></div> </main> </div>
<style></style>
<!-- Uses a header that scrolls with the text, rather than staying locked at the top --> <div class="mdl-layout mdl-js-layout"> <header class="mdl-layout__header mdl-layout__header--scroll"> <div class="mdl-layout__header-row"> <!-- Title --> <span class="mdl-layout-title">Title</span> <!-- Add spacer, to align navigation to the right --> <div class="mdl-layout-spacer"></div> <!-- Navigation --> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> </header> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> <main class="mdl-layout__content"> <div class="page-content"><!-- Your content goes here --></div> </main> </div>
<style></style>
<!-- Uses a header that contracts as the page scrolls down. --> <style> .demo-layout-waterfall .mdl-layout__header-row .mdl-navigation__link:last-of-type { padding-right: 0; } </style> <div class="demo-layout-waterfall mdl-layout mdl-js-layout"> <header class="mdl-layout__header mdl-layout__header--waterfall"> <!-- Top row, always visible --> <div class="mdl-layout__header-row"> <!-- Title --> <span class="mdl-layout-title">Title</span> <div class="mdl-layout-spacer"></div> <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable mdl-textfield--floating-label mdl-textfield--align-right"> <label class="mdl-button mdl-js-button mdl-button--icon" for="waterfall-exp"> <i class="material-icons">search</i> </label> <div class="mdl-textfield__expandable-holder"> <input class="mdl-textfield__input" type="text" name="sample" id="waterfall-exp"> </div> </div> </div> <!-- Bottom row, not visible on scroll --> <div class="mdl-layout__header-row"> <div class="mdl-layout-spacer"></div> <!-- Navigation --> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> </header> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> <nav class="mdl-navigation"> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> <a class="mdl-navigation__link" href="">Link</a> </nav> </div> <main class="mdl-layout__content"> <div class="page-content"><!-- Your content goes here --></div> </main> </div>
<style></style>
<!-- Simple header with scrollable tabs. --> <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header"> <header class="mdl-layout__header"> <div class="mdl-layout__header-row"> <!-- Title --> <span class="mdl-layout-title">Title</span> </div> <!-- Tabs --> <div class="mdl-layout__tab-bar mdl-js-ripple-effect"> <a href="#scroll-tab-1" class="mdl-layout__tab is-active">Tab 1</a> <a href="#scroll-tab-2" class="mdl-layout__tab">Tab 2</a> <a href="#scroll-tab-3" class="mdl-layout__tab">Tab 3</a> <a href="#scroll-tab-4" class="mdl-layout__tab">Tab 4</a> <a href="#scroll-tab-5" class="mdl-layout__tab">Tab 5</a> <a href="#scroll-tab-6" class="mdl-layout__tab">Tab 6</a> </div> </header> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> </div> <main class="mdl-layout__content"> <section class="mdl-layout__tab-panel is-active" id="scroll-tab-1"> <div class="page-content"><!-- Your content goes here --></div> </section> <section class="mdl-layout__tab-panel" id="scroll-tab-2"> <div class="page-content"><!-- Your content goes here --></div> </section> <section class="mdl-layout__tab-panel" id="scroll-tab-3"> <div class="page-content"><!-- Your content goes here --></div> </section> <section class="mdl-layout__tab-panel" id="scroll-tab-4"> <div class="page-content"><!-- Your content goes here --></div> </section> <section class="mdl-layout__tab-panel" id="scroll-tab-5"> <div class="page-content"><!-- Your content goes here --></div> </section> <section class="mdl-layout__tab-panel" id="scroll-tab-6"> <div class="page-content"><!-- Your content goes here --></div> </section> </main> </div>
<style></style>
<!-- Simple header with fixed tabs. --> <div class="mdl-layout mdl-js-layout mdl-layout--fixed-header mdl-layout--fixed-tabs"> <header class="mdl-layout__header"> <div class="mdl-layout__header-row"> <!-- Title --> <span class="mdl-layout-title">Title</span> </div> <!-- Tabs --> <div class="mdl-layout__tab-bar mdl-js-ripple-effect"> <a href="#fixed-tab-1" class="mdl-layout__tab is-active">Tab 1</a> <a href="#fixed-tab-2" class="mdl-layout__tab">Tab 2</a> <a href="#fixed-tab-3" class="mdl-layout__tab">Tab 3</a> </div> </header> <div class="mdl-layout__drawer"> <span class="mdl-layout-title">Title</span> </div> <main class="mdl-layout__content"> <section class="mdl-layout__tab-panel is-active" id="fixed-tab-1"> <div class="page-content"><!-- Your content goes here --></div> </section> <section class="mdl-layout__tab-panel" id="fixed-tab-2"> <div class="page-content"><!-- Your content goes here --></div> </section> <section class="mdl-layout__tab-panel" id="fixed-tab-3"> <div class="page-content"><!-- Your content goes here --></div> </section> </main> </div>
<style></style>
简介
Material Design Lite (MDL) 布局组件是一种全面处理页面布局的方法,它使用 MDL 开发原则,允许有效地使用 MDL 组件,并自动适应不同的浏览器、屏幕尺寸和设备。
适当且易于访问的布局是所有用户界面的关键功能,无论网站的内容或功能如何。因此,页面设计和展示是整体用户体验的重要因素。有关详细信息,请参阅布局组件的Material Design 规范页面。
通过提供可重用组件,使用 MDL 布局原则简化了可扩展页面的创建,并通过建立可识别的视觉元素、遵守逻辑结构网格以及在多个平台和屏幕尺寸上保持适当的间距,鼓励跨环境的一致性。MDL 布局功能非常强大且动态,允许在外观和行为方面保持高度一致性,同时保持开发灵活性和易用性。
要包含基本的 MDL 布局组件
1. 编写一个 <div>
元素。这是包含整个布局的“外部”div。
<div>
</div>
注意:布局不能直接应用于
<body>
元素。始终创建一个嵌套的<div>
元素。
2. 使用 class
属性,将 MDL 类(用空格分隔)添加到 div 中,如指示的那样。
<div class="mdl-layout mdl-js-layout">
</div>
3. 在 div 内部,编写一个 <header>
元素。它包含在大型屏幕上显示的带有导航链接的标题行,以及用于打开较小屏幕上的导航抽屉的菜单图标。使用 class
属性将 MDL 类添加到标题中。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
</header>
</div>
4. 在标题内部,添加一个 <div>
以生成菜单图标,并包含如指示的 MDL 类。div 本身没有任何内容。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
</header>
</div>
5. 仍然在标题内部,添加另一个 <div>
以容纳标题行的内容,并包含如指示的 MDL 类。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
</div>
</header>
</div>
6. 在标题行 div 内部,添加一个包含布局标题的 span,并包含如指示的 MDL 类。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Simple Layout</span>
</div>
</header>
</div>
7. 在 span 之后,添加一个 <div>
以将标题的导航链接右对齐,并包含如指示的 MDL 类。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Simple Layout</span>
<div class="mdl-layout-spacer"></div>
</div>
</header>
</div>
8. 在分隔符 div 之后,添加一个 <nav>
元素以包含标题的导航链接,并包含如指示的 MDL 类。在 nav 内部,为每个标题链接添加一个锚 <a>
元素,并包含如指示的 MDL 类。这完成了布局的标题。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Simple Layout</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Nav link 1</a>
<a class="mdl-navigation__link" href="#">Nav link 2</a>
<a class="mdl-navigation__link" href="#">Nav link 3</a>
</nav>
</div>
</header>
</div>
9. 在标题之后,添加一个 <div>
元素以容纳滑出抽屉的内容,并添加如指示的 MDL 类。抽屉在较小的屏幕上自动显示,并且可以在任何屏幕尺寸上使用菜单图标打开。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Simple Layout</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Nav link 1</a>
<a class="mdl-navigation__link" href="#">Nav link 2</a>
<a class="mdl-navigation__link" href="#">Nav link 3</a>
</nav>
</div>
</header>
<div class="mdl-layout__drawer">
</div>
</div>
10. 在抽屉 div 内部,添加一个包含布局标题的 span(这应该与步骤 5 中的标题匹配),并包含如指示的 MDL 类。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Simple Layout</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Nav link 1</a>
<a class="mdl-navigation__link" href="#">Nav link 2</a>
<a class="mdl-navigation__link" href="#">Nav link 3</a>
</nav>
</div>
</header>
<div class="mdl-layout__drawer">
<span class="mdl-layout__title">Simple Layout</span>
</div>
</div>
11. 在 span 之后,添加一个 <nav>
元素以包含抽屉的导航链接,以及每个抽屉链接的一个锚 <a>
元素(这些应该与步骤 7 中的链接匹配),并包含如指示的 MDL 类。这完成了布局的抽屉。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Simple Layout</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Nav link 1</a>
<a class="mdl-navigation__link" href="#">Nav link 2</a>
<a class="mdl-navigation__link" href="#">Nav link 3</a>
</nav>
</div>
</header>
<div class="mdl-layout__drawer">
<span class="mdl-layout__title">Simple Layout</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Nav link 1</a>
<a class="mdl-navigation__link" href="#">Nav link 2</a>
<a class="mdl-navigation__link" href="#">Nav link 3</a>
</nav>
</div>
</div>
12. 最后,在抽屉 div 之后,添加一个 <main>
元素以容纳布局的主要内容,并包含如指示的 MDL 类。在该元素内部,添加您所需的内容。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Simple Layout</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Nav link 1</a>
<a class="mdl-navigation__link" href="#">Nav link 2</a>
<a class="mdl-navigation__link" href="#">Nav link 3</a>
</nav>
</div>
</header>
<div class="mdl-layout__drawer">
<span class="mdl-layout__title">Simple Layout</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Nav link 1</a>
<a class="mdl-navigation__link" href="#">Nav link 2</a>
<a class="mdl-navigation__link" href="#">Nav link 3</a>
</nav>
</div>
<main class="mdl-layout__content">
<p>Content</p>
<p>Goes</p>
<p>Here</p>
</main>
</div>
布局组件已准备好使用。
示例
一个布局,对于较大的屏幕具有固定标题,对于较小的屏幕具有可折叠抽屉。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header">
<div class="mdl-layout-icon"></div>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Material Design Lite</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Hello</a>
<a class="mdl-navigation__link" href="#">World.</a>
<a class="mdl-navigation__link" href="#">How</a>
<a class="mdl-navigation__link" href="#">Are</a>
<a class="mdl-navigation__link" href="#">You?</a>
</nav>
</div>
</header>
<div class="mdl-layout__drawer">
<span class="mdl-layout__title">Material Design Lite</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Hello</a>
<a class="mdl-navigation__link" href="#">World.</a>
<a class="mdl-navigation__link" href="#">How</a>
<a class="mdl-navigation__link" href="#">Are</a>
<a class="mdl-navigation__link" href="#">You?</a>
</nav>
</div>
<main class="mdl-layout__content">
<div>Content</div>
</main>
</div>
同一个布局,具有非固定标题,该标题会随内容一起滚动。
<div class="mdl-layout mdl-js-layout">
<header class="mdl-layout__header mdl-layout__header--scroll">
<img class="mdl-layout-icon"></img>
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Material Design Lite</span>
<div class="mdl-layout-spacer"></div>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Hello</a>
<a class="mdl-navigation__link" href="#">World.</a>
<a class="mdl-navigation__link" href="#">How</a>
<a class="mdl-navigation__link" href="#">Are</a>
<a class="mdl-navigation__link" href="#">You?</a>
</nav>
</div>
</header>
<div class="mdl-layout__drawer">
<span class="mdl-layout__title">Material Design Lite</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Hello</a>
<a class="mdl-navigation__link" href="#">World.</a>
<a class="mdl-navigation__link" href="#">How</a>
<a class="mdl-navigation__link" href="#">Are</a>
<a class="mdl-navigation__link" href="#">You?</a>
</nav>
</div>
<main class="mdl-layout__content">
<div>Content</div>
</main>
</div>
一个布局,包含一个固定抽屉,在较大的屏幕上充当侧边栏导航。在较小的屏幕上,抽屉会折叠,并显示菜单图标。
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer">
<header class="mdl-layout__header">
<div class="mdl-layout__header-row">
<span class="mdl-layout__title">Fixed drawer layout demo</span>
</div>
</header>
<div class="mdl-layout__drawer">
<span class="mdl-layout__title">Material Design Lite</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Hello</a>
<a class="mdl-navigation__link" href="#">World.</a>
<a class="mdl-navigation__link" href="#">How</a>
<a class="mdl-navigation__link" href="#">Are</a>
<a class="mdl-navigation__link" href="#">You?</a>
</nav>
</div>
<main class="mdl-layout__content">
<div>Content</div>
</main>
</div>
一个布局,包含一个固定抽屉,但没有标题。
<div class="mdl-layout mdl-js-layout mdl-layout--fixed-drawer">
<div class="mdl-layout__drawer">
<span class="mdl-layout__title">Material Design Lite</span>
<nav class="mdl-navigation">
<a class="mdl-navigation__link" href="#">Hello</a>
<a class="mdl-navigation__link" href="#">World.</a>
<a class="mdl-navigation__link" href="#">How</a>
<a class="mdl-navigation__link" href="#">Are</a>
<a class="mdl-navigation__link" href="#">You?</a>
</nav>
</div>
<main class="mdl-layout__content">
<div>Content</div>
</main>
</div>
配置选项
MDL CSS 类应用各种预定义的视觉和行为增强功能到布局中。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-layout |
将容器定义为 MDL 组件 | 外部 div 元素上必需 |
mdl-js-layout |
为布局分配基本的 MDL 行为 | 外部 div 元素上必需 |
mdl-layout__header |
将容器定义为 MDL 组件 | 标题元素上必需 |
mdl-layout-icon |
用于添加应用程序图标。如果两者都可见,则会被菜单图标隐藏。 | 位于可选的图标元素上 |
mdl-layout__header-row |
将容器定义为 MDL 标题行 | 标题内容 div 上必需 |
mdl-layout__title |
定义布局标题文本 | 布局标题 span 上必需 |
mdl-layout-spacer |
用于对齐标题或抽屉内的元素,通过扩展以填充剩余空间。通常用于将元素对齐到右侧。 | 位于布局标题后可选的 div 上 |
mdl-navigation |
将容器定义为 MDL 导航组 | nav 元素上必需 |
mdl-navigation__link |
将锚点定义为 MDL 导航链接 | 标题和/或抽屉锚元素上必需 |
mdl-layout__drawer |
将容器定义为 MDL 布局抽屉 | 抽屉 div 元素上必需 |
mdl-layout__content |
将容器定义为 MDL 布局内容 | 主元素上必需 |
mdl-layout__header--scroll |
使标题随内容滚动 | 可选;位于标题元素上 |
mdl-layout--fixed-drawer |
使抽屉在较大屏幕上始终可见并打开 | 可选;位于外部 div 元素上(而不是抽屉 div 元素上) |
mdl-layout--fixed-header |
使标题始终可见,即使在小屏幕上也是如此 | 可选;位于外部 div 元素上 |
mdl-layout--no-drawer-button |
不显示抽屉按钮 | 可选;位于 mdl-layout 元素上 |
mdl-layout--no-desktop-drawer-button |
在桌面模式下不显示抽屉按钮 | 可选;位于 mdl-layout 元素上 |
mdl-layout--large-screen-only |
在较小屏幕上隐藏元素 | 可选;位于 mdl-layout 的任何子元素上 |
mdl-layout--small-screen-only |
在较大屏幕上隐藏元素 | 可选;位于 mdl-layout 的任何子元素上 |
mdl-layout__header--waterfall |
允许使用多条标题行实现“瀑布”效果 | 可选;位于标题元素上 |
mdl-layout__header--waterfall-hide-top |
在瀑布标题上隐藏顶部而不是底部行 | 可选;位于标题元素上。需要 mdl-layout__header--waterfall |
mdl-layout__header--transparent |
使标题透明(绘制在布局背景之上) | 可选;位于标题元素上 |
mdl-layout__header--seamed |
使用没有阴影的标题 | 可选;位于标题元素上 |
mdl-layout__tab-bar |
将容器定义为 MDL 选项卡栏 | 标题内(选项卡布局)的 div 元素上必需 |
mdl-layout__tab |
将锚点定义为 MDL 选项卡链接 | 选项卡栏锚元素上必需 |
is-active |
将选项卡定义为默认活动选项卡 | 可选;位于选项卡栏锚元素和关联的选项卡部分元素上 |
mdl-layout__tab-panel |
将容器定义为选项卡内容面板 | 选项卡部分元素上必需 |
mdl-layout__tab-manual-switch |
禁用单击选项卡分隔符时切换选项卡的功能。对于禁用默认行为并设置您自己的事件侦听器很有用。 | 可选;位于选项卡栏元素上 |
mdl-layout--fixed-tabs |
使用固定选项卡而不是默认的可滚动选项卡 | 可选;位于外部 div 元素上(而不是标题内的 div 上) |
网格
<div class="mdl-grid"> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> <div class="mdl-cell mdl-cell--1-col">1</div> </div> <div class="mdl-grid"> <div class="mdl-cell mdl-cell--4-col">4</div> <div class="mdl-cell mdl-cell--4-col">4</div> <div class="mdl-cell mdl-cell--4-col">4</div> </div> <div class="mdl-grid"> <div class="mdl-cell mdl-cell--6-col">6</div> <div class="mdl-cell mdl-cell--4-col">4</div> <div class="mdl-cell mdl-cell--2-col">2</div> </div> <div class="mdl-grid"> <div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">6 (8 tablet)</div> <div class="mdl-cell mdl-cell--4-col mdl-cell--6-col-tablet">4 (6 tablet)</div> <div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">2 (4 phone)</div> </div>
<style>.mdl-cell { box-sizing: border-box; background-color: #BDBDBD; height: 200px; padding-left: 8px; padding-top: 4px; color: white; } .mdl-grid:first-of-type .mdl-cell { height: 50px; } </style>
简介
Material Design Lite (MDL) **网格**组件是一种简化的内容布局方法,适用于多种屏幕尺寸。它减少了在各种显示条件下正确显示内容块所需的常规编码负担。
MDL 网格由一个容器元素定义和包围。网格在桌面屏幕尺寸下有 12 列,在平板电脑尺寸下有 8 列,在手机尺寸下有 4 列,每个尺寸都具有预定义的边距和间隙。单元格按顺序排列在一行中,按照定义的顺序排列,但有一些例外。
- 如果单元格在其中一个屏幕尺寸的行中不合适,它会流到下一行。
- 如果单元格指定的列大小等于或大于当前屏幕尺寸的列数,则它会占据其行的全部宽度。
可以通过设置其 max-width
CSS 属性,设置最大网格宽度,之后网格保持居中,并在两侧填充填充。
网格是大多数用户界面中一个相当新颖且非标准化的功能,它为用户提供了一种以有组织的方式查看内容的方式,否则这些内容可能难以理解或保留。它们的设计和使用是整体用户体验中的一个重要因素。
要包含 MDL **网格**组件
1. 编写一个 <div>
元素;这是“外部”容器,旨在容纳所有网格单元格。根据需要设置 div 的样式(颜色、字体大小等)。
<div>
</div>
2. 使用 class
属性将 mdl-grid
MDL 类添加到 div 中。
<div class="mdl-grid">
</div>
3. 对于每个单元格,编写一个“内部”div,包括要显示的文本。
<div class="mdl-grid">
<div>Content</div>
<div>goes</div>
<div>here</div>
</div>
4. 使用 class
属性将 mdl-cell
类和 mdl-cell--COLUMN-col
类添加到“内部”div 中,其中 COLUMN 指定单元格的列大小。
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--4-col">Content</div>
<div class="mdl-cell mdl-cell--4-col">goes</div>
<div class="mdl-cell mdl-cell--4-col">here</div>
</div>
5. 可选地添加 mdl-cell--COLUMN-col-DEVICE
类,其中 COLUMN 指定特定设备上单元格的列大小,DEVICE 指定设备类型。
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet">Content</div>
<div class="mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet">goes</div>
<div class="mdl-cell mdl-cell--4-col mdl-cell--8-col-tablet">here</div>
</div>
网格组件已准备好使用。
示例
一个包含五个列大小为 1 的单元格的网格。
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--1-col">CS 1</div>
<div class="mdl-cell mdl-cell--1-col">CS 1</div>
<div class="mdl-cell mdl-cell--1-col">CS 1</div>
<div class="mdl-cell mdl-cell--1-col">CS 1</div>
<div class="mdl-cell mdl-cell--1-col">CS 1</div>
</div>
一个包含三个单元格的网格,一个列大小为 6,一个列大小为 4,一个列大小为 2。
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--6-col">CS 6</div>
<div class="mdl-cell mdl-cell--4-col">CS 4</div>
<div class="mdl-cell mdl-cell--2-col">CS 2</div>
</div>
一个包含三个列大小为 6 的单元格的网格,在平板电脑设备上将显示为列大小为 8。
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">CS 6 (8 on tablet)</div>
<div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">CS 6 (8 on tablet)</div>
<div class="mdl-cell mdl-cell--6-col mdl-cell--8-col-tablet">CS 6 (8 on tablet)</div>
</div>
一个包含四个列大小为 2 的单元格的网格,在手机设备上将显示为列大小为 4。
<div class="mdl-grid">
<div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
<div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
<div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
<div class="mdl-cell mdl-cell--2-col mdl-cell--4-col-phone">CS 2 (4 on phone)</div>
</div>
配置选项
MDL CSS 类应用各种预定义的视觉增强功能和行为效果到网格中。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-grid |
将容器定义为 MDL 网格组件 | “外部”div 元素上必需 |
mdl-cell |
将容器定义为 MDL 单元格 | “内部”div 元素上必需 |
mdl-grid--no-spacing |
修改网格单元格,使其之间没有边距。 | 网格容器上可选。 |
mdl-cell--N-col |
将单元格的列大小设置为 N | N 为 1-12(含),默认为 4;“内部”div 元素上可选 |
mdl-cell--N-col-desktop |
仅在桌面模式下将单元格的列大小设置为 N | N 为 1-12(含);“内部”div 元素上可选 |
mdl-cell--N-col-tablet |
仅在平板电脑模式下将单元格的列大小设置为 N | N 为 1-8(含);“内部”div 元素上可选 |
mdl-cell--N-col-phone |
仅在手机模式下将单元格的列大小设置为 N | N 为 1-4(含);“内部”div 元素上可选 |
mdl-cell--N-offset |
在单元格之前添加 N 列空白 | N 为 1-11(含);“内部”div 元素上可选 |
mdl-cell--N-offset-desktop |
在桌面模式下在单元格之前添加 N 列空白 | N 为 1-11(含);“内部”div 元素上可选 |
mdl-cell--N-offset-tablet |
在平板电脑模式下在单元格之前添加 N 列空白 | N 为 1-7(含);“内部”div 元素上可选 |
mdl-cell--N-offset-phone |
在手机模式下在单元格之前添加 N 列空白 | N 为 1-3(含);“内部”div 元素上可选 |
mdl-cell--order-N |
将单元格重新排序到位置 N | N 为 1-12(含);“内部”div 元素上可选 |
mdl-cell--order-N-desktop |
在桌面模式下将单元格重新排序到位置 N | N 为 1-12(含);“内部”div 元素上可选 |
mdl-cell--order-N-tablet |
在平板电脑模式下将单元格重新排序到位置 N | N 为 1-12(含);“内部”div 元素上可选 |
mdl-cell--order-N-phone |
在手机模式下将单元格重新排序到位置 N | N 为 1-12(含);“内部”div 元素上可选 |
mdl-cell--hide-desktop |
在桌面模式下隐藏单元格 | “内部”div 元素上可选 |
mdl-cell--hide-tablet |
在平板电脑模式下隐藏单元格 | “内部”div 元素上可选 |
mdl-cell--hide-phone |
在手机模式下隐藏单元格 | “内部”div 元素上可选 |
mdl-cell--stretch |
垂直拉伸单元格以填充父元素 | 默认;“内部”div 元素上可选 |
mdl-cell--top |
将单元格对齐到父元素的顶部 | “内部”div 元素上可选 |
mdl-cell--middle |
将单元格对齐到父元素的中间 | “内部”div 元素上可选 |
mdl-cell--bottom |
将单元格对齐到父元素的底部 | “内部”div 元素上可选 |
选项卡
- 艾德
- 凯特琳
- 罗柏
- 珊莎
- 布兰登
- 艾莉亚
- 瑞肯
- 泰温
- 瑟曦
- 詹姆
- 提利昂
- 韦赛里斯
- 丹妮莉斯
<div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect"> <div class="mdl-tabs__tab-bar"> <a href="#starks-panel" class="mdl-tabs__tab is-active">Starks</a> <a href="#lannisters-panel" class="mdl-tabs__tab">Lannisters</a> <a href="#targaryens-panel" class="mdl-tabs__tab">Targaryens</a> </div> <div class="mdl-tabs__panel is-active" id="starks-panel"> <ul> <li>Eddard</li> <li>Catelyn</li> <li>Robb</li> <li>Sansa</li> <li>Brandon</li> <li>Arya</li> <li>Rickon</li> </ul> </div> <div class="mdl-tabs__panel" id="lannisters-panel"> <ul> <li>Tywin</li> <li>Cersei</li> <li>Jamie</li> <li>Tyrion</li> </ul> </div> <div class="mdl-tabs__panel" id="targaryens-panel"> <ul> <li>Viserys</li> <li>Daenerys</li> </ul> </div> </div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) **选项卡**组件是一个用户界面元素,允许不同的内容块以互斥的方式共享相同的屏幕空间。选项卡总是以两组或更多组的形式呈现,它们使您可以轻松浏览和切换应用程序的不同视图或功能方面,或单独浏览分类数据集。选项卡充当其各自内容的“标题”;*活动*选项卡(当前显示其内容的选项卡)始终在视觉上与其他选项卡区分开来,以便用户知道当前内容属于哪个标题。
选项卡是用户界面中一个已建立但非标准化的功能,允许用户查看不同的但通常相关的块内容(通常称为*面板*)。选项卡节省了屏幕空间,并提供了对数据的直观和逻辑访问,同时减少了导航和相关的用户混淆。它们的设计和使用是整体用户体验中的一个重要因素。有关详细信息,请参阅选项卡组件的Material Design 规范页面。
要包含一组 MDL **选项卡**组件
1. 编写一个 <div>
元素;这是“外部”div,旨在包含所有选项卡及其内容。
<div>
</div>
2. 在“外部”div 内,为选项卡本身编写一个“内部”div,并为每个选项卡的内容编写一个,所有这些都是同级元素。也就是说,对于三个内容选项卡,您将编写四个“内部”div。
<div>
<div>
...
</div>
<div>
...
</div>
<div>
...
</div>
<div>
...
</div>
</div>
3. 在第一个“内部”div(选项卡)内,为每个选项卡编写一个锚 <a>
(链接)标签。包含具有匹配选项卡 id
属性值的 href
属性,以及一些简短的链接文本。在其余的“内部”div(内容)上,编写 id
属性,其值与链接的 href
匹配。
<div>
<div>
<a href="#tab1">Tab One</a>
<a href="#tab2">Tab Two</a>
<a href="#tab3">Tab Three</a>
</div>
<div id="tab1">
...
</div>
<div id="tab2">
...
</div>
<div id="tab3">
...
</div>
</div>
4. 在其余的“内部”div 内,编写您打算在每个面板中显示的内容;使用标准的 HTML 标签根据需要构建内容。
<div>
<div>
<a href="#tab1">Tab One</a>
<a href="#tab2">Tab Two</a>
<a href="#tab3">Tab Three</a>
</div>
<div id="tab1">
<p>First tab's content.</p>
</div>
<div id="tab2">
<p>Second tab's content.</p>
</div>
<div id="tab3">
<p>Third tab's content.</p>
</div>
</div>
5. 使用 class
属性将一个或多个 MDL 类(用空格分隔)添加到“外部”和“内部”div 中;确保在您要默认显示的选项卡上包含 is-active
类。
<div class="mdl-tabs mdl-js-tabs">
<div class="mdl-tabs__tab-bar">
<a href="#tab1" class="mdl-tabs__tab">Tab One</a>
<a href="#tab2" class="mdl-tabs__tab">Tab Two</a>
<a href="#tab3" class="mdl-tabs__tab">Tab Three</a>
</div>
<div class="mdl-tabs__panel is-active" id="tab1">
<p>First tab's content.</p>
</div>
<div class="mdl-tabs__panel" id="tab2">
<p>Second tab's content.</p>
</div>
<div class="mdl-tabs__panel" id="tab3">
<p>Third tab's content.</p>
</div>
</div>
选项卡组件已准备好使用。
示例
三个选项卡,在选项卡链接上带有波纹效果。
<div class="mdl-tabs mdl-js-tabs mdl-js-ripple-effect">
<div class="mdl-tabs__tab-bar">
<a href="#about-panel" class="mdl-tabs__tab is-active">About the Beatles</a>
<a href="#members-panel" class="mdl-tabs__tab">Members</a>
<a href="#albums-panel" class="mdl-tabs__tab">Discography</a>
</div>
<div class="mdl-tabs__panel is-active" id="about-panel">
<p><b>The Beatles</b> were a four-piece musical group from Liverpool, England.
Formed in 1960, their career spanned just over a decade, yet they are widely
regarded as the most influential band in history.</p>
<p>Their songs are among the best-loved music of all time. It is said that every
minute of every day, a radio station somewhere is playing a Beatles song.</p>
</div>
<div class="mdl-tabs__panel" id="members-panel">
<p>The Beatles' members were:</p>
<ul>
<li>John Lennon (1940-1980)</li>
<li>Paul McCartney (1942-)</li>
<li>George Harrison (1943-2001)</li>
<li>Ringo Starr (1940-)</li>
</ul>
</div>
<div class="mdl-tabs__panel" id="albums-panel">
<p>The Beatles' original UK LPs, in order of release:</p>
<ol>
<li>Please Please Me (1963)</li>
<li>With the Beatles (1963)</li>
<li>A Hard Day's Night (1964)</li>
<li>Beatles for Sale (1964)</li>
<li>Help! (1965)</li>
<li>Rubber Soul (1965)</li>
<li>Revolver (1966)</li>
<li>Sgt. Pepper's Lonely Hearts Club Band (1967)</li>
<li>The Beatles ("The White Album", 1968)</li>
<li>Yellow Submarine (1969)</li>
<li>Abbey Road (1969)</li>
<li>Let It Be (1970)</li>
</ol>
</div>
</div>
配置选项
MDL CSS 类应用各种预定义的视觉和行为增强功能到选项卡中。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-tabs |
定义一个选项卡容器作为 MDL 组件 | “外部”div 元素上必需 |
mdl-js-tabs |
为选项卡容器分配基本的 MDL 行为 | “外部”div 元素上必需 |
mdl-js-ripple-effect |
将波纹点击效果应用于选项卡链接 | 可选;位于“外部”div 元素上 |
mdl-tabs__tab-bar |
定义一个容器作为 MDL 选项卡链接栏 | 第一个“内部”div 元素上需要 |
mdl-tabs__tab |
将锚点(链接)定义为 MDL 选项卡激活器 | 第一个“内部”div 元素中的所有链接上都需要 |
is-active |
将选项卡定义为默认显示选项卡 | 在“内部”div(选项卡)元素中的一个(且仅一个)上需要 |
mdl-tabs__panel |
定义一个容器作为选项卡内容 | 每个“内部”div(选项卡)元素上都需要 |
页脚
<footer class="mdl-mega-footer"> <div class="mdl-mega-footer__middle-section"> <div class="mdl-mega-footer__drop-down-section"> <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked> <h1 class="mdl-mega-footer__heading">Features</h1> <ul class="mdl-mega-footer__link-list"> <li><a href="#">About</a></li> <li><a href="#">Terms</a></li> <li><a href="#">Partners</a></li> <li><a href="#">Updates</a></li> </ul> </div> <div class="mdl-mega-footer__drop-down-section"> <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked> <h1 class="mdl-mega-footer__heading">Details</h1> <ul class="mdl-mega-footer__link-list"> <li><a href="#">Specs</a></li> <li><a href="#">Tools</a></li> <li><a href="#">Resources</a></li> </ul> </div> <div class="mdl-mega-footer__drop-down-section"> <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked> <h1 class="mdl-mega-footer__heading">Technology</h1> <ul class="mdl-mega-footer__link-list"> <li><a href="#">How it works</a></li> <li><a href="#">Patterns</a></li> <li><a href="#">Usage</a></li> <li><a href="#">Products</a></li> <li><a href="#">Contracts</a></li> </ul> </div> <div class="mdl-mega-footer__drop-down-section"> <input class="mdl-mega-footer__heading-checkbox" type="checkbox" checked> <h1 class="mdl-mega-footer__heading">FAQ</h1> <ul class="mdl-mega-footer__link-list"> <li><a href="#">Questions</a></li> <li><a href="#">Answers</a></li> <li><a href="#">Contact us</a></li> </ul> </div> </div> <div class="mdl-mega-footer__bottom-section"> <div class="mdl-logo">Title</div> <ul class="mdl-mega-footer__link-list"> <li><a href="#">Help</a></li> <li><a href="#">Privacy & Terms</a></li> </ul> </div> </footer>
<style></style>
<footer class="mdl-mini-footer"> <div class="mdl-mini-footer__left-section"> <div class="mdl-logo">Title</div> <ul class="mdl-mini-footer__link-list"> <li><a href="#">Help</a></li> <li><a href="#">Privacy & Terms</a></li> </ul> </div> </footer>
<style></style>
简介
Material Design Lite (MDL) 的页脚组件是一个综合容器,旨在在一个视觉上吸引人且逻辑上直观的区域中呈现大量相关内容。尽管它被称为“页脚”,但它可以放置在设备屏幕上的任何适当位置,在其他内容之前或之后。
MDL 页脚组件采用两种基本形式:大型页脚和小型页脚。顾名思义,大型页脚包含比小型页脚更多(且更复杂)的内容。大型页脚呈现由水平线分隔的多个内容部分,而小型页脚呈现单个内容部分。两种页脚形式都有其自己的内部结构,包括必需和可选元素,并且通常包含信息和可点击内容,例如链接。
页脚,如本组件所示,是用户界面中一个相当新的功能,允许用户以连贯且一致的方式查看离散的内容块。它们的设计和使用是整体用户体验的重要因素。
要包含 MDL 大型页脚组件
1a. 编写一个<footer>
元素。在页脚内,为每个内容部分包含一个<div>
元素,通常为三个:顶部、中间和底部。
<footer>
<div>
...
</div>
<div>
...
</div>
<div>
...
</div>
</footer>
1b. 使用class
属性将适当的 MDL 类添加到页脚和 div 中。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
...
</div>
<div class="mdl-mega-footer__middle-section">
...
</div>
<div class="mdl-mega-footer__bottom-section">
...
</div>
</footer>
2a. 在顶部部分的 div 内,为左侧和右侧内容部分编写两个同级“内部”div。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div>
...
</div>
<div>
...
</div>
</div>
<div class="mdl-mega-footer__middle-section">
...
</div>
<div class="mdl-mega-footer__bottom-section">
...
</div>
</footer>
2b. 使用class
属性将适当的 MDL 类添加到两个“内部”左侧和右侧 div 中。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div class="mdl-mega-footer__left-section">
...
</div>
<div class="mdl-mega-footer__right-section">
...
</div>
</div>
<div class="mdl-mega-footer__middle-section">
...
</div>
<div class="mdl-mega-footer__bottom-section">
...
</div>
</footer>
3a. 在中间部分的 div 内,为下拉内容部分编写一个或多个同级“内部”div。也就是说,对于两个下拉部分,您将编写两个 div。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div class="mdl-mega-footer__left-section">
...
</div>
<div class="mdl-mega-footer__right-section">
...
</div>
</div>
<div class="mdl-mega-footer__middle-section">
<div>
...
</div>
<div>
...
</div>
</div>
<div class="mdl-mega-footer__bottom-section">
...
</div>
</footer>
3b. 使用class
属性将适当的 MDL 类添加到两个“内部”下拉 div 中。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div class="mdl-mega-footer__left-section">
...
</div>
<div class="mdl-mega-footer__right-section">
...
</div>
</div>
<div class="mdl-mega-footer__middle-section">
<div class="mdl-mega-footer__drop-down-section">
...
</div>
<div class="mdl-mega-footer__drop-down-section">
...
</div>
</div>
<div class="mdl-mega-footer__bottom-section">
...
</div>
</footer>
4a. 在底部部分的 div 内,为部分标题编写一个“内部”div,并为底部部分链接编写一个同级无序列表。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div class="mdl-mega-footer__left-section">
...
</div>
<div class="mdl-mega-footer__right-section">
...
</div>
</div>
<div class="mdl-mega-footer__middle-section">
<div class="mdl-mega-footer__drop-down-section">
...
</div>
<div class="mdl-mega-footer__drop-down-section">
...
</div>
</div>
<div class="mdl-mega-footer__bottom-section">
<div>
...
</div>
<ul>
...
</ul>
</div>
</footer>
4b. 使用class
属性将适当的 MDL 类添加到“内部”div 标题和列表中。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div class="mdl-mega-footer__left-section">
...
</div>
<div class="mdl-mega-footer__right-section">
...
</div>
</div>
<div class="mdl-mega-footer__middle-section">
<div class="mdl-mega-footer__drop-down-section">
...
</div>
<div class="mdl-mega-footer__drop-down-section">
...
</div>
</div>
<div class="mdl-mega-footer__bottom-section">
<div class="mdl-logo">
</div>
<ul class="mdl-mega-footer__link-list">
...
</ul>
</div>
</footer>
5. 将内容添加到页脚的顶部(左侧和右侧)、中间(下拉)和底部(文本和链接)部分;使用class
属性包含任何适当的 MDL 类。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div class="mdl-mega-footer__left-section">
<button class="mdl-mega-footer__social-btn"></button>
<button class="mdl-mega-footer__social-btn"></button>
<button class="mdl-mega-footer__social-btn"></button>
</div>
<div class="mdl-mega-footer__right-section">
<a href="">Link 1</a>
<a href="">Link 2</a>
<a href="">Link 3</a>
</div>
</div>
<div class="mdl-mega-footer__middle-section">
<div class="mdl-mega-footer__drop-down-section">
<h1 class="mdl-mega-footer__heading">Drop-down 1 Heading</h1>
<ul class="mdl-mega-footer__link-list">
<li><a href="">Link A</a></li>
<li><a href="">Link B</a></li>
<li><a href="">Link C</a></li>
<li><a href="">Link D</a></li>
</ul>
</div>
<div class="mdl-mega-footer__drop-down-section">
<h1 class="mdl-mega-footer__heading">Drop-down 2 Heading</h1>
<ul class="mdl-mega-footer__link-list">
<li><a href="">Link A</a></li>
<li><a href="">Link B</a></li>
<li><a href="">Link C</a></li>
</ul>
</div>
</div>
<div class="mdl-mega-footer__bottom-section">
<div class="mdl-logo">
Mega-Footer Bottom Section Heading
</div>
<ul class="mdl-mega-footer__link-list">
<li><a href="">Link A</a></li>
<li><a href="">Link B</a></li>
</ul>
</div>
</footer>
大型页脚组件已准备好使用。
示例
一个具有三个部分和在中间部分具有两个下拉部分的大型页脚组件。
<footer class="mdl-mega-footer">
<div class="mdl-mega-footer__top-section">
<div class="mdl-mega-footer__left-section">
<button class="mdl-mega-footer__social-btn"></button>
<button class="mdl-mega-footer__social-btn"></button>
<button class="mdl-mega-footer__social-btn"></button>
</div>
<div class="mdl-mega-footer__right-section">
<a href="#">Introduction</a>
<a href="#">App Status Dashboard</a>
<a href="#">Terms of Service</a>
</div>
</div>
<div class="mdl-mega-footer__middle-section">
<div class="mdl-mega-footer__drop-down-section">
<h1 class="mdl-mega-footer__heading">Learning and Support</h1>
<ul class="mdl-mega-footer__link-list">
<li><a href="#">Resource Center</a></li>
<li><a href="#">Help Center</a></li>
<li><a href="#">Community</a></li>
<li><a href="#">Learn with Google</a></li>
<li><a href="#">Small Business Community</a></li>
<li><a href="#">Think Insights</a></li>
</ul>
</div>
<div class="mdl-mega-footer__drop-down-section">
<h1 class="mdl-mega-footer__heading">Just for Developers</h1>
<ul class="mdl-mega-footer__link-list">
<li><a href="#">Google Developers</a></li>
<li><a href="#">AdWords API</a></li>
<li><a href="#">AdWords Scipts</a></li>
<li><a href="#">AdWords Remarketing Tag</a></li>
</ul>
</div>
</div>
<div class="mdl-mega-footer__bottom-section">
<div class="mdl-logo">
More Information
</div>
<ul class="mdl-mega-footer__link-list">
<li><a href="#">Help</a></li>
<li><a href="#">Privacy and Terms</a></li>
</ul>
</div>
</footer>
要包含 MDL 小型页脚组件
1a. 编写一个<footer>
元素。在页脚内,编写两个<div>
元素,一个用于左侧部分,一个用于右侧部分。
<footer>
<div>
...
</div>
<div>
...
</div>
</footer>
1b. 使用class
属性将适当的 MDL 类添加到页脚和 div 中。
<footer class="mdl-mini-footer">
<div class="mdl-mini-footer__left-section">
...
</div>
<div class="mdl-mini-footer__right-section">
...
</div>
</footer>
2a. 在左侧部分的 div 内,为部分标题编写一个“内部”div,并为左侧部分链接编写一个同级无序列表。
<footer class="mdl-mini-footer">
<div class="mdl-mini-footer__left-section">
<div>
...
</div>
<ul>
...
</ul>
</div>
<div class="mdl-mini-footer__right-section">
...
</div>
</footer>
2b. 使用class
属性将适当的 MDL 类添加到“内部”div 和列表中。
<footer class="mdl-mini-footer">
<div class="mdl-mini-footer__left-section">
<div class="mdl-logo">
...
</div>
<ul class="mdl-mini-footer__link-list">
...
</ul>
</div>
<div class="mdl-mini-footer__right-section">
...
</div>
</footer>
3. 将内容添加到页脚的左侧(文本和链接)和右侧(文本或装饰)部分;使用class
属性包含任何适当的 MDL 类。
<footer class="mdl-mini-footer">
<div class="mdl-mini-footer__left-section">
<div class="mdl-logo">
Mini-footer Heading
</div>
<ul class="mdl-mini-footer__link-list">
<li><a href="">Link 1</a></li>
<li><a href="">Link 2</a></li>
<li><a href="">Link 3</a></li>
</ul>
</div>
<div class="mdl-mini-footer__right-section">
<button class="mdl-mini-footer__social-btn"></button>
<button class="mdl-mini-footer__social-btn"></button>
<button class="mdl-mini-footer__social-btn"></button>
</div>
</footer>
小型页脚组件已准备好使用。
示例
一个具有左侧和右侧部分的小型页脚。
<footer class="mdl-mini-footer">
<div class="mdl-mini-footer__left-section">
<div class="mdl-logo">
More Information
</div>
<ul class="mdl-mini-footer__link-list">
<li><a href="#">Help</a></li>
<li><a href="#">Privacy and Terms</a></li>
<li><a href="#">User Agreement</a></li>
</ul>
</div>
<div class="mdl-mini-footer__right-section">
<button class="mdl-mini-footer__social-btn"></button>
<button class="mdl-mini-footer__social-btn"></button>
<button class="mdl-mini-footer__social-btn"></button>
</div>
</footer>
配置选项
MDL CSS 类将各种预定义的视觉增强功能应用于页脚。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-mega-footer |
将容器定义为 MDL 大型页脚组件 | 页脚元素上需要 |
mdl-mega-footer__top-section |
将容器定义为页脚顶部部分 | 顶部部分“外部”div 元素上需要 |
mdl-mega-footer__left-section |
将容器定义为左侧部分 | 左侧部分“内部”div 元素上需要 |
mdl-mega-footer__social-btn |
在大型页脚内定义一个装饰性正方形 | 按钮元素上需要(如果使用) |
mdl-mega-footer__right-section |
将容器定义为右侧部分 | 右侧部分“内部”div 元素上需要 |
mdl-mega-footer__middle-section |
将容器定义为页脚中间部分 | 中间部分“外部”div 元素上需要 |
mdl-mega-footer__drop-down-section |
将容器定义为下拉(垂直)内容区域 | 下拉“内部”div 元素上需要 |
mdl-mega-footer__heading |
将标题定义为大型页脚标题 | 下拉部分内的 h1 元素上需要 |
mdl-mega-footer__link-list |
将无序列表定义为下拉(垂直)列表 | 下拉部分内的 ul 元素上需要 |
mdl-mega-footer__bottom-section |
将容器定义为页脚底部部分 | 底部部分“外部”div 元素上需要 |
mdl-logo |
将容器定义为样式化的部分标题 | 大型页脚底部部分或小型页脚左侧部分的“内部”div 元素上需要 |
mdl-mini-footer |
将容器定义为 MDL 小型页脚组件 | 页脚元素上需要 |
mdl-mini-footer__left-section |
将容器定义为左侧部分 | 左侧部分“内部”div 元素上需要 |
mdl-mini-footer__link-list |
将无序列表定义为内联(水平)列表 | “mdl-logo”div 元素的同级 ul 元素上需要 |
mdl-mini-footer__right-section |
将容器定义为右侧部分 | 右侧部分“内部”div 元素上需要 |
mdl-mini-footer__social-btn |
在小型页脚内定义一个装饰性正方形 | 按钮元素上需要(如果使用) |
列表
可自定义的可滚动列表。
- 布莱恩·科兰斯顿
- 亚伦·保尔
- 鲍勃·奥登科克
<!-- Simple list --> <style> .demo-list-item { width: 300px; } </style> <ul class="demo-list-item mdl-list"> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> Bryan Cranston </span> </li> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> Aaron Paul </span> </li> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> Bob Odenkirk </span> </li> </ul>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Icon List --> <style> .demo-list-icon { width: 300px; } </style> <ul class="demo-list-icon mdl-list"> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-icon">person</i> Bryan Cranston </span> </li> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-icon">person</i> Aaron Paul </span> </li> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-icon">person</i> Bob Odenkirk </span> </li> </ul>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- List items with avatar and action --> <style> .demo-list-action { width: 300px; } </style> <div class="demo-list-action mdl-list"> <div class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Bryan Cranston</span> </span> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </div> <div class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Aaron Paul</span> </span> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </div> <div class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Bob Odenkirk</span> </span> <span class="mdl-list__item-secondary-content"> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </span> </div> </div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
- person 布莱恩·科兰斯顿
- person 亚伦·保尔
- person 鲍勃·奥登科克
<!-- List with avatar and controls --> <style> .demo-list-control { width: 300px; } .demo-list-radio { display: inline; } </style> <ul class="demo-list-control mdl-list"> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> Bryan Cranston </span> <span class="mdl-list__item-secondary-action"> <label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="list-checkbox-1"> <input type="checkbox" id="list-checkbox-1" class="mdl-checkbox__input" checked /> </label> </span> </li> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> Aaron Paul </span> <span class="mdl-list__item-secondary-action"> <label class="demo-list-radio mdl-radio mdl-js-radio mdl-js-ripple-effect" for="list-option-1"> <input type="radio" id="list-option-1" class="mdl-radio__button" name="options" value="1" checked /> </label> </span> </li> <li class="mdl-list__item"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> Bob Odenkirk </span> <span class="mdl-list__item-secondary-action"> <label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="list-switch-1"> <input type="checkbox" id="list-switch-1" class="mdl-switch__input" checked /> </label> </span> </li> </ul>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Two Line List with secondary info and action --> <style> .demo-list-two { width: 300px; } </style> <ul class="demo-list-two mdl-list"> <li class="mdl-list__item mdl-list__item--two-line"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Bryan Cranston</span> <span class="mdl-list__item-sub-title">62 Episodes</span> </span> <span class="mdl-list__item-secondary-content"> <span class="mdl-list__item-secondary-info">Actor</span> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </span> </li> <li class="mdl-list__item mdl-list__item--two-line"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Aaron Paul</span> <span class="mdl-list__item-sub-title">62 Episodes</span> </span> <span class="mdl-list__item-secondary-content"> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </span> </li> <li class="mdl-list__item mdl-list__item--two-line"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Bob Odenkirk</span> <span class="mdl-list__item-sub-title">62 Episodes</span> </span> <span class="mdl-list__item-secondary-content"> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </span> </li> </ul>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Three Line List with secondary info and action --> <style> .demo-list-three { width: 650px; } </style> <ul class="demo-list-three mdl-list"> <li class="mdl-list__item mdl-list__item--three-line"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Bryan Cranston</span> <span class="mdl-list__item-text-body"> Bryan Cranston played the role of Walter in Breaking Bad. He is also known for playing Hal in Malcom in the Middle. </span> </span> <span class="mdl-list__item-secondary-content"> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </span> </li> <li class="mdl-list__item mdl-list__item--three-line"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Aaron Paul</span> <span class="mdl-list__item-text-body"> Aaron Paul played the role of Jesse in Breaking Bad. He also featured in the "Need For Speed" Movie. </span> </span> <span class="mdl-list__item-secondary-content"> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </span> </li> <li class="mdl-list__item mdl-list__item--three-line"> <span class="mdl-list__item-primary-content"> <i class="material-icons mdl-list__item-avatar">person</i> <span>Bob Odenkirk</span> <span class="mdl-list__item-text-body"> Bob Odinkrik played the role of Saul in Breaking Bad. Due to public fondness for the character, Bob stars in his own show now, called "Better Call Saul". </span> </span> <span class="mdl-list__item-secondary-content"> <a class="mdl-list__item-secondary-action" href="#"><i class="material-icons">star</i></a> </span> </li> </ul>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
列表以单个连续元素的形式垂直显示多个行项目。请参阅Material Design 规范以了解有关内容选项的更多信息。
要包含 MDL 列表组件
创建具有基本项目的列表。
1. 使用类mdl-list
编写一个<ul>
元素;这是“外部”容器,旨在容纳列表的所有内容。
<ul class='mdl-list'>
</ul>
2. 使用类mdl-list__item
编写所需的任意多个<li>
元素;这旨在容纳所有项目的内容。
<ul class='mdl-list'>
<li class="mdl-list__item"></li>
<li class="mdl-list__item"></li>
<li class="mdl-list__item"></li>
</ul>
3. 将您的内容添加为<li>
的子元素,并使用适当的内容类型修改类,例如。
<ul class='mdl-list'>
<li class="mdl-list__item">
<span class="mdl-list__item-primary-content"></span>
</li>
<li class="mdl-list__item">
<span class="mdl-list__item-primary-content"></span>
</li>
<li class="mdl-list__item">
<span class="mdl-list__item-primary-content"></span>
</li>
</ul>
配置选项
MDL CSS 类将各种预定义的视觉增强功能应用于列表。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
.mdl-list | 将列表定义为 MDL 组件 | - |
.mdl-list__item | 定义列表的项目 | 必需 |
.mdl-list__item--two-line | 将列表的项目定义为两行 | 可选的两行列表变体 |
.mdl-list__item--three-line | 将列表的项目定义为三行 | 可选的三行列表变体 |
.mdl-list__item-primary-content | 定义主要内容子分区 | - |
.mdl-list__item-avatar | 定义头像子分区 | - |
.mdl-list__item-icon | 定义图标子分区 | - |
.mdl-list__item-secondary-content | 定义辅助内容子分区 | 需要.mdl-list__item--two-line 或.mdl-list__item--three-line |
.mdl-list__item-secondary-info | 定义信息子分区 | 需要.mdl-list__item--two-line 或.mdl-list__item--three-line |
.mdl-list__item-secondary-action | 定义操作子分区 | 需要.mdl-list__item--two-line 或.mdl-list__item--three-line |
.mdl-list__item-text-body | 定义文本主体子分区 | 需要.mdl-list__item--three-line |
加载
指示加载和进度状态。
进度条
<!-- Simple MDL Progress Bar --> <div id="p1" class="mdl-progress mdl-js-progress"></div> <script> document.querySelector('#p1').addEventListener('mdl-componentupgraded', function() { this.MaterialProgress.setProgress(44); }); </script>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- MDL Progress Bar with Indeterminate Progress --> <div id="p2" class="mdl-progress mdl-js-progress mdl-progress__indeterminate"></div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- MDL Progress Bar with Buffering --> <div id="p3" class="mdl-progress mdl-js-progress"></div> <script> document.querySelector('#p3').addEventListener('mdl-componentupgraded', function() { this.MaterialProgress.setProgress(33); this.MaterialProgress.setBuffer(87); }); </script>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的进度条组件是网页或应用程序中后台活动的可视化指示器。进度指示器通常由一个水平条组成,其中包含一些动画,传达运动的感觉。虽然某些进度设备指示完成的大致或特定百分比,但 MDL 进度条组件仅传达活动正在进行且尚未完成的事实。
进度指示器是用户界面中已建立但未标准化的功能,它为用户提供了应用程序状态的可视线索。因此,其设计和使用是整体用户体验中的重要因素。有关详细信息,请参阅进度组件的Material Design 规范页面。
要包含 MDL 进度条组件
1. 编写一个<div>
元素。包含任何所需的属性和值,例如 id 或宽度 - 通常使用外部 CSS 而不是此处所示的内联style
属性。
<div id="prog1" style="width:250px"></div>
2. 使用class
属性将一个或多个 MDL 类(用空格分隔)添加到 div 中。
<div id="prog1" style="width:250px" class="mdl-js-progress"></div>
进度条组件已准备好使用。
示例
静态(非动画)进度指示器。
<div id="progstatic" style="width:250px" class="mdl-js-progress"></div>
活动(动画)进度指示器。
<div id="progactive" style="width:200px" class="mdl-js-progress
mdl-progress--indeterminate"></div>
配置选项
MDL CSS 类将各种预定义的可视和行为增强应用于进度指示器。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-js-progress |
为进度指示器分配基本的 MDL 行为 | 必需 |
mdl-progress--indeterminate |
应用动画效果 | 可选 |
注意:代码库中确实存在
mdl-progress__intermediate
。由于名称不符合 BEM 对齐,因此已弃用。它将在 2.0 中删除。
微调器
<!-- MDL Spinner Component --> <div class="mdl-spinner mdl-js-spinner is-active"></div>
<style></style><!-- MDL Spinner Component with Single Color --> <div class="mdl-spinner mdl-spinner--single-color mdl-js-spinner is-active"></div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的加载动画组件是经典“等待光标”(在硬件和软件版本之间差异很大)的增强替代品,并指示存在正在进行的进程,其结果尚不可用。加载动画由一个开放的圆圈组成,该圆圈在顺时针方向动画时会更改颜色,并清楚地传达进程已启动但尚未完成。
加载动画本身不执行任何操作,无论是通过其显示还是当用户点击或触摸它时,并且不指示进程的具体进度或完成程度。MDL 加载动画组件提供了各种类型的加载动画,并允许您添加显示效果。
加载动画是大多数用户界面中一项相当新的功能,它为用户提供了有关正在进行的活动的一致视觉提示,而不管硬件设备、操作系统或浏览器环境如何。其设计和使用是整体用户体验中的重要因素。
要包含 MDL 加载动画组件
1. 编写一个元素,例如<div>
、<p>
或<span>
,以包含加载动画;该元素本身不应有任何内容。
<div></div>
2. 使用class
属性将一个或多个 MDL 类(用空格分隔)添加到容器中。
<div class="mdl-spinner mdl-js-spinner is-active"></div>
加载动画组件已准备好使用。
示例
div 中的默认加载动画。
<div class="mdl-spinner mdl-js-spinner is-active"></div>
段落中的单色加载动画。
<p class="mdl-spinner mdl-js-spinner mdl-spinner--single-color is-active"></p>
配置选项
MDL CSS 类将各种预定义的可视增强应用于加载动画。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-spinner |
将容器定义为 MDL 加载动画组件 | 必需 |
mdl-js-spinner |
为加载动画分配基本的 MDL 行为 | 必需 |
is-active |
使加载动画可见并动画化 | 可选 |
mdl-spinner--single-color |
使用单一(主要调色板)颜色而不是更改颜色 | 可选 |
注意:加载动画没有特定的禁用版本;
is-active
类的存在与否决定了加载动画是否可见。例如,此加载动画处于非活动状态且不可见:<div class="mdl-spinner mdl-js-spinner"></div>
此属性可以通过脚本以编程方式添加或删除。
滑块
从范围内选择一个值。
<!-- Default Slider --> <input class="mdl-slider mdl-js-slider" type="range" min="0" max="100" value="0" tabindex="0">
<style></style><!-- Slider with Starting Value --> <input class="mdl-slider mdl-js-slider" type="range" min="0" max="100" value="25" tabindex="0">
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的滑块组件是新的 HTML5 <input type="range">
元素的增强版本。滑块由一条水平线组成,该水平线上有一个小的可移动圆盘(滑块)以及通常清楚地传达用户移动它时将设置的值的文本。
滑块是用户界面中一项相当新的功能,允许用户通过在范围内移动滑块来从预定范围内选择一个值(较低的值在左侧,较高的值在右侧)。其设计和使用是整体用户体验中的重要因素。有关详细信息,请参阅滑块组件的Material Design 规范页面。
增强的滑块组件可以最初或以编程方式禁用。
要包含 MDL 滑块组件
1. 编写一个<p>
段落元素并根据需要对其进行样式设置。包含一个 CSS width
属性(直接或通过 CSS 类),它决定滑块的大小。
<p style="width:300px">
...
</p>
2. 在段落容器内,编写一个<input>
元素并为其提供一个type
属性,其值为"range"
。还为其提供一个id
属性以使其可用于脚本编写,以及min
和max
属性,其值指定滑块的范围。为其提供一个value
属性,其值设置初始滑块位置(可选;如果省略,则默认为最大值的 50%),以及一个step
属性,其值指定滑块移动的增量(也可选;如果省略,则默认为 1)。最后,为其提供一个事件处理程序,以便在用户更改滑块的值时执行。
<p style="width:300px">
<input type="range" id="s1" min="0" max="10" value="4" step="2">
</p>
3. 使用class
属性将一个或多个 MDL 类(用空格分隔)添加到滑块中。
<p style="width:300px">
<input class="mdl-slider mdl-js-slider" type="range" id="s1" min="0" max="10" value="4" step="2">
</p>
滑块组件已准备好使用。
示例
一个控制音量的滑块。
<p style="width:300px">
<input class="mdl-slider mdl-js-slider" type="range" id="s1" min="0" max="10" value="4" step="2">
</p>
配置选项
MDL CSS 类将各种预定义的可视和行为增强应用于滑块。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-slider |
将输入元素定义为 MDL 组件 | 必需 |
mdl-js-slider |
为输入元素分配基本的 MDL 行为 | 必需 |
注意:提供了滑块的禁用版本,并使用标准 HTML 布尔属性
disabled
调用。<input class="mdl-slider mdl-js-slider" type="range" id="s1" min="0" max="10" value="4" step="2" disabled>
此属性可以通过脚本以编程方式添加或删除。注意:虽然value属性用于设置滑块的初始值,但不应将其用于以编程方式修改值;相反,请使用MDL的
change()
方法。例如,假设slider1是一个滑块对象,newvalue是一个包含所需值的变量,请勿使用slider1.value = newvalue
;而应使用slider1.MaterialSlider.change(newvalue)
。
许可证
版权归Google,2015年所有。根据Apache-2许可证授权。
Snackbar
短暂的弹出通知。
<button id="demo-show-snackbar" class="mdl-button mdl-js-button mdl-button--raised" type="button">Show Snackbar</button> <div id="demo-snackbar-example" class="mdl-js-snackbar mdl-snackbar"> <div class="mdl-snackbar__text"></div> <button class="mdl-snackbar__action" type="button"></button> </div> <script> (function() { 'use strict'; var snackbarContainer = document.querySelector('#demo-snackbar-example'); var showSnackbarButton = document.querySelector('#demo-show-snackbar'); var handler = function(event) { showSnackbarButton.style.backgroundColor = ''; }; showSnackbarButton.addEventListener('click', function() { 'use strict'; showSnackbarButton.style.backgroundColor = '#' + Math.floor(Math.random() * 0xFFFFFF).toString(16); var data = { message: 'Button color changed.', timeout: 2000, actionHandler: handler, actionText: 'Undo' }; snackbarContainer.MaterialSnackbar.showSnackbar(data); }); }()); </script>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<button id="demo-show-toast" class="mdl-button mdl-js-button mdl-button--raised" type="button">Show Toast</button> <div id="demo-toast-example" class="mdl-js-snackbar mdl-snackbar"> <div class="mdl-snackbar__text"></div> <button class="mdl-snackbar__action" type="button"></button> </div> <script> (function() { 'use strict'; window['counter'] = 0; var snackbarContainer = document.querySelector('#demo-toast-example'); var showToastButton = document.querySelector('#demo-show-toast'); showToastButton.addEventListener('click', function() { 'use strict'; var data = {message: 'Example Message # ' + ++counter}; snackbarContainer.MaterialSnackbar.showSnackbar(data); }); }()); </script>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL)的Snackbar组件是一个用于通知用户操作状态的容器。它显示在屏幕底部。Snackbar可能包含一个操作按钮,供用户执行命令。例如,操作应撤消已提交的操作或在操作失败时重试。操作不应用于关闭Snackbar。如果不提供操作,Snackbar将变为Toast组件。
基本用法
使用容器div元素启动Snackbar。在该容器上定义mdl-js-snackbar
和mdl-snackbar
类。将aria live和atomic值添加到此容器也很有益。
在容器内,为消息创建一个容器元素。此元素应具有类mdl-snackbar__text
。保持此元素为空!显示Snackbar时会添加文本。
其次,在容器中添加一个按钮元素。此元素应具有类mdl-snackbar__action
。建议将类型设置为button,以确保不会意外提交表单。此处也请保持文本内容为空!不要直接应用任何事件处理程序。
现在您已完成Snackbar的功能标记。剩下的就是在您的JavaScript中调用Snackbar容器上的showSnackbar
方法。这需要一个普通对象来适当地配置Snackbar内容。您可以连续多次调用它,消息将堆叠。
示例
所有Snackbar都应通过相同的元素显示。
标记
<div aria-live="assertive" aria-atomic="true" aria-relevant="text" class="mdl-snackbar mdl-js-snackbar">
<div class="mdl-snackbar__text"></div>
<button type="button" class="mdl-snackbar__action"></button>
</div>
注意:在此示例中,有一些用于辅助功能的aria属性。请根据需要修改这些属性以适应您的网站。
Snackbar
var notification = document.querySelector('.mdl-js-snackbar');
var data = {
message: 'Message Sent',
actionHandler: function(event) {},
actionText: 'Undo',
timeout: 10000
};
notification.MaterialSnackbar.showSnackbar(data);
Toast
var notification = document.querySelector('.mdl-js-snackbar');
notification.MaterialSnackbar.showSnackbar(
{
message: 'Image Uploaded'
}
);
CSS 类
块
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-snackbar |
定义Snackbar组件的容器。 | Snackbar容器上需要此类 |
元素
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-snackbar__text |
定义包含Snackbar文本的元素。 | 必需 |
mdl-snackbar__action |
定义触发Snackbar操作的元素。 | 必需 |
修饰符
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-snackbar--active |
将Snackbar标记为活动状态,这会导致它显示。 | 处于活动状态时需要此类。在JavaScript中控制 |
数据对象
Snackbar组件的showSnackbar
方法接受一个用于Snackbar数据的对象。下表显示了属性及其用法。
属性 | 效果 | 备注 | 类型 |
---|---|---|---|
message | 要显示的文本消息。 | 必需 | 字符串 |
timeout | 显示Snackbar的时间(毫秒)。 | 可选(默认2750) | 整数 |
actionHandler | 单击操作时要执行的函数。 | 可选 | 函数 |
actionText | 操作按钮要显示的文本。 | 如果设置了actionHandler,则需要此属性 | 字符串。 |
切换
在状态之间进行选择。
复选框
<label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-1"> <input type="checkbox" id="checkbox-1" class="mdl-checkbox__input" checked> <span class="mdl-checkbox__label">Checkbox</span> </label>
<style></style><label class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect" for="checkbox-2"> <input type="checkbox" id="checkbox-2" class="mdl-checkbox__input"> <span class="mdl-checkbox__label">Checkbox</span> </label>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL)的复选框组件是标准HTML<input type="checkbox">
元素的增强版本。复选框由一个小方块组成,通常还有文本,清楚地传达了用户单击或触摸时将设置或取消设置的二进制条件。复选框通常(但不一定)成组出现,并且可以单独选中和取消选中。MDL复选框组件允许您添加显示和点击效果。
复选框是大多数用户界面中的常见功能,无论网站的内容或功能如何。因此,其设计和使用是整体用户体验的重要因素。有关详细信息,请参阅复选框组件的Material Design规范页面。
增强的复选框组件比标准复选框具有更生动的视觉外观,并且可以最初或以编程方式禁用。
要包含MDL复选框组件
1. 编写一个<label>
元素,并为其提供一个for
属性,其值是它将包含的复选框的唯一ID。当<input>
元素包含在<label>
元素内部时,for
属性是可选的,但为了清晰起见,建议使用它。
<label for="chkbox1">
...
</label>
2. 在标签内,编写一个<input>
元素,并为其提供一个type
属性,其值为"checkbox"
。还为其提供一个id
属性,其值与标签的for
属性值匹配。
<label for="chkbox1">
<input type="checkbox" id="chkbox1">
</label>
3. 还在标签内,在复选框之后,编写一个<span>
元素,其中包含复选框的文本标题。
<label for="chkbox1">
<input type="checkbox" id="chkbox1">
<span>Enable AutoSave</span>
</label>
4. 使用class
属性,将一个或多个MDL类(用空格分隔)添加到标签、复选框和标题。
<label for="chkbox1" class="mdl-checkbox mdl-js-checkbox">
<input type="checkbox" id="chkbox1" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Enable AutoSave</span>
</label>
复选框组件已准备就绪。
示例
带有波纹点击效果的复选框。
<label for="chkbox1" class="mdl-checkbox mdl-js-checkbox mdl-js-ripple-effect">
<input type="checkbox" id="chkbox1" class="mdl-checkbox__input">
<span class="mdl-checkbox__label">Enable AutoSave</span>
</label>
配置选项
MDL CSS类将各种预定义的视觉和行为增强应用于复选框。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-checkbox |
将标签定义为MDL组件 | 标签元素上需要此类 |
mdl-js-checkbox |
为标签分配基本MDL行为 | 标签元素上需要此类 |
mdl-checkbox__input |
将基本MDL行为应用于复选框 | 输入元素(复选框)上需要此类 |
mdl-checkbox__label |
将基本MDL行为应用于标题 | 输入元素(复选框)上需要此类 |
mdl-js-ripple-effect |
应用涟漪单击效果 | 可选;位于标签元素上,而不是输入元素(复选框)上 |
注意:提供了所有可用复选框类型的禁用版本,并使用标准HTML布尔属性
disabled
调用。<input type="checkbox" id="checkbox-5" class="mdl-checkbox__input" disabled>
可以通过脚本以编程方式添加或删除此属性。
单选按钮
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="option-1"> <input type="radio" id="option-1" class="mdl-radio__button" name="options" value="1" checked> <span class="mdl-radio__label">First</span> </label>
<style></style><label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="option-2"> <input type="radio" id="option-2" class="mdl-radio__button" name="options" value="2"> <span class="mdl-radio__label">Second</span> </label>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL)的单选按钮组件是标准HTML<input type="radio">
(或“单选按钮”元素)的增强版本。单选按钮由一个小圆圈组成,通常还有文本,清楚地传达了用户单击或触摸时将设置的条件。单选按钮总是成组出现(两个或多个),虽然可以单独选中,但只能通过选中同一组中的另一个单选按钮(这将取消选中该组中的所有其他单选按钮)来取消选中。MDL单选按钮组件允许您添加显示和点击效果。
单选按钮是大多数用户界面中的常见功能,无论网站的内容或功能如何。因此,其设计和使用是整体用户体验的重要因素。有关详细信息,请参阅单选按钮组件的Material Design规范页面。
增强的单选按钮组件比标准单选按钮具有更生动的视觉外观,并且可以最初或以编程方式禁用。
要包含MDL单选按钮组件
1. 编写一个<label>
元素,并为其提供一个for
属性,其值是它将包含的单选按钮的唯一ID。当<input>
元素包含在<label>
元素内部时,for
属性是可选的,但为了清晰起见,建议使用它。
<label for="radio1">
...
</label>
2. 在标签内,编写一个<input>
元素,并为其提供一个type
属性,其值为"radio"
。还为其提供一个id
属性,其值与标签的for
属性值匹配,以及一个name
属性,其值标识单选按钮组。可以选择为其提供一个value
属性,其值提供有关单选按钮的一些信息,以供脚本使用。
<label for="radio1">
<input type="radio" id="radio1" name="flash" value="on">
</label>
3. 还在标签内,在单选按钮之后,编写一个<span>
元素,其中包含单选按钮的文本标题。
<label for="radio1">
<input type="radio" id="radio1" name="flash" value="on">
<span>Always on</span>
</label>
4. 使用class
属性,将一个或多个MDL类(用空格分隔)添加到标签、复选框和标题。
<label for="radio1" class="mdl-radio mdl-js-radio">
<input type="radio" id="radio1" name="flash" value="on" class="mdl-radio__button">
<span class="mdl-radio__label">Always on</span>
</label>
5. 对组中的其他单选按钮组件重复步骤1到4。对于每个组件
- 在
label
元素上,指定唯一的for
属性值 - 在
input
元素上,指定一个id
属性值,使其与label
元素的for
属性值匹配 - 在
input
元素上,为组中的所有单选按钮组件指定相同的name
属性值 - 可选地,在
input
元素上,指定唯一的value
属性值
单选按钮组件已准备就绪。
示例
一组用于控制相机闪光灯设置的单选按钮。
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="flash1">
<input checked class="mdl-radio__button" id="flash1" name="flash" type="radio"
value="on">
<span class="mdl-radio__label">Always on</span>
</label>
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="flash2">
<input class="mdl-radio__button" id="flash2" name="flash" type="radio" value="off">
<span class="mdl-radio__label">Always off</span>
</label>
<label class="mdl-radio mdl-js-radio mdl-js-ripple-effect" for="flash3">
<input class="mdl-radio__button" id="flash3" name="flash" type="radio" value="auto">
<span class="mdl-radio__label">Automatic</span>
</label>
配置选项
MDL CSS类将各种预定义的视觉和行为增强应用于单选按钮。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-radio |
将标签定义为MDL组件 | 标签元素上需要此类 |
mdl-js-radio |
为标签分配基本MDL行为 | 标签元素上需要此类 |
mdl-radio__button |
将基本MDL行为应用于单选按钮 | 输入元素(单选按钮)上需要此类 |
mdl-radio__label |
将基本MDL行为应用于标题 | 输入元素(复选框)上需要此类 |
mdl-js-ripple-effect |
应用涟漪单击效果 | 可选;位于标签元素上,而不是输入元素(单选按钮)上 |
注意:提供了所有可用单选按钮类型的禁用版本,并使用标准HTML布尔属性
disabled
调用。<input type="radio" id="radio5" name="flash" class="mdl-radio__button" disabled>
可以通过脚本以编程方式添加或删除此属性。
图标切换
<label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-1"> <input type="checkbox" id="icon-toggle-1" class="mdl-icon-toggle__input" checked> <i class="mdl-icon-toggle__label material-icons">format_bold</i> </label>
<style></style><label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-2"> <input type="checkbox" id="icon-toggle-2" class="mdl-icon-toggle__input"> <i class="mdl-icon-toggle__label material-icons">format_italic</i> </label>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL)的图标切换组件是标准HTML<input type="checkbox">
元素的增强版本。图标切换由用户定义的图标组成,该图标通过视觉突出显示指示将用户单击或触摸时设置或取消设置的二进制条件。与复选框类似,图标切换可以单独出现或成组出现,并且可以单独选中和取消选中。
图标切换(特别是作为某些复选框的替代方案)可以成为用户界面中的宝贵功能,无论网站的内容或功能如何。因此,其设计和使用是整体用户体验的重要因素。有关详细信息,请参阅图标切换组件的Material Design规范页面。
图标切换组件可以具有比标准复选框更自定义的视觉外观,并且可以最初或以编程方式禁用。
要包含MDL图标切换组件
1. 编写一个<label>
元素,并为其提供一个for
属性,其值是它将包含的图标切换的唯一ID。
<label for="icon-toggle-1">
...
</label>
2. 在标签内,编写一个<input>
元素,并为其提供一个type
属性,其值为"checkbox"
。还为其提供一个id
属性,其值与标签的for
属性值匹配。
<label for="icon-toggle-1">
<input type="checkbox" id="icon-toggle-1">
</label>
3. 还在标签内,在输入元素之后,编写一个<i>
元素,其中包含图标切换所需的图标。
<label for="icon-toggle-1">
<input type="checkbox" id="icon-toggle-1">
<i class="mdl-icon-toggle__label material-icons">format_bold</i>
</label>
4. 使用class
属性,将一个或多个MDL类(用空格分隔)添加到标签和输入元素。
<label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-1">
<input type="checkbox" id="icon-toggle-1" class="mdl-icon-toggle__input">
<i class="mdl-icon-toggle__label material-icons">format_bold</i>
</label>
图标切换组件已准备就绪。
示例
带有波纹点击效果的图标切换。
<label class="mdl-icon-toggle mdl-js-icon-toggle mdl-js-ripple-effect" for="icon-toggle-1">
<input type="checkbox" id="icon-toggle-1" class="mdl-icon-toggle__input">
<i class="mdl-icon-toggle__label material-icons">format_bold</i>
</label>
配置选项
MDL CSS类将各种预定义的视觉和行为增强应用于图标切换。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-icon-toggle |
将标签定义为MDL组件 | 标签元素上需要此类 |
mdl-js-icon-toggle |
为标签分配基本MDL行为 | 标签元素上需要此类 |
mdl-icon-toggle__input |
将基本MDL行为应用于图标切换 | 输入元素(图标切换)上需要此类 |
mdl-icon-toggle__label |
将基本MDL行为应用于标题 | i元素(图标)上需要此类 |
mdl-js-ripple-effect |
应用涟漪单击效果 | 可选;位于标签元素上,而不是输入元素(图标切换)上 |
注意: 提供了所有可用输入类型的禁用版本,并使用标准 HTML 布尔属性
disabled
调用。<input type="checkbox" id="icon-toggle-5" class="mdl-icon-toggle__input" disabled>
可以通过脚本以编程方式添加或删除此属性。
开关
<label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-1"> <input type="checkbox" id="switch-1" class="mdl-switch__input" checked> <span class="mdl-switch__label"></span> </label>
<style></style><label class="mdl-switch mdl-js-switch mdl-js-ripple-effect" for="switch-2"> <input type="checkbox" id="switch-2" class="mdl-switch__input"> <span class="mdl-switch__label"></span> </label>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的开关组件是标准 HTML <input type="checkbox">
元素的增强版本。开关由一个短的水平“轨道”组成,带有一个突出的圆形状态指示器,并且通常带有文本,清楚地传达用户点击或触摸时将设置或取消设置的二进制条件。与复选框一样,开关可以单独或成组出现,并且可以单独选中和取消选中。但是,开关提供了对其状态更直观的视觉表示:左侧/灰色表示关闭,右侧/彩色表示打开。MDL 开关组件允许您添加显示和点击效果。
开关,尤其是在替换某些复选框方面,可以成为用户界面中的宝贵功能,无论网站的内容或功能如何。因此,它们的设计和使用是整体用户体验中的一个重要因素。有关详细信息,请参阅开关组件的Material Design 规范页面。
增强的开关组件比标准复选框具有更生动的视觉外观,并且可以最初或以编程方式禁用。
要包含 MDL 开关组件
1. 编写一个<label>
元素,并为其提供一个for
属性,该属性的值是其将包含的开关的唯一 ID。
<label for="switch1">
...
</label>
2. 在标签内,编写一个<input>
元素,并为其提供一个type
属性,其值为"checkbox"
。还为其提供一个id
属性,其值与标签的for
属性值匹配。
<label for="switch1">
<input type="checkbox" id="switch1">
</label>
3. 还在标签内,在复选框之后,编写一个包含开关文本标题的<span>
元素。
<label for="switch1">
<input type="checkbox" id="switch1">
<span>Sound off/on</span>
</label>
4. 使用class
属性,将一个或多个 MDL 类(用空格分隔)添加到标签、开关和标题。
<label for="switch1" class="mdl-switch mdl-js-switch">
<input type="checkbox" id="switch1" class="mdl-switch__input">
<span class="mdl-switch__label">Sound off/on</span>
</label>
开关组件已准备好使用。
示例
带有涟漪点击效果的开关。
<label for="switch1" class="mdl-switch mdl-js-switch mdl-js-ripple-effect">
<input type="checkbox" id="switch1" class="mdl-switch__input">
<span class="mdl-switch__label">Sound off/on</span>
</label>
配置选项
MDL CSS 类将各种预定义的视觉和行为增强应用于开关。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-switch |
将标签定义为MDL组件 | 标签元素上需要此类 |
mdl-js-switch |
为标签分配基本MDL行为 | 标签元素上需要此类 |
mdl-switch__input |
将基本 MDL 行为应用于开关 | 输入元素(开关)上需要 |
mdl-switch__label |
将基本MDL行为应用于标题 | 输入元素(复选框)上需要此类 |
mdl-js-ripple-effect |
应用涟漪单击效果 | 可选;位于标签元素上,而不是输入元素(开关)上 |
注意: 提供了所有可用开关类型的禁用版本,并使用标准 HTML 布尔属性
disabled
调用。<input type="checkbox" id="switch5" class="mdl-switch__input" disabled>
可以通过脚本以编程方式添加或删除此属性。
表格
组织数据。
材料 | 数量 | 单价 |
---|---|---|
亚克力(透明) | 25 | $2.90 |
胶合板(桦木) | 50 | $1.25 |
层压板(金色蓝底) | 10 | $2.35 |
<table class="mdl-data-table mdl-js-data-table mdl-data-table--selectable mdl-shadow--2dp"> <thead> <tr> <th class="mdl-data-table__cell--non-numeric">Material</th> <th>Quantity</th> <th>Unit price</th> </tr> </thead> <tbody> <tr> <td class="mdl-data-table__cell--non-numeric">Acrylic (Transparent)</td> <td>25</td> <td>$2.90</td> </tr> <tr> <td class="mdl-data-table__cell--non-numeric">Plywood (Birch)</td> <td>50</td> <td>$1.25</td> </tr> <tr> <td class="mdl-data-table__cell--non-numeric">Laminate (Gold on Blue)</td> <td>10</td> <td>$2.35</td> </tr> </tbody> </table>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的数据表组件是标准 HTML <table>
的增强版本。数据表由格式良好的数据的行和列组成,并提供适当的用户交互功能。
表格是大多数用户界面中普遍存在的功能,无论网站的内容或功能如何。因此,它们的设计和使用是整体用户体验中的一个重要因素。有关详细信息,请参阅数据表组件的Material Design 规范页面。
数据表中可用的行/列/单元格类型大多是自格式化的;也就是说,一旦定义了数据表,各个单元格就只需要很少的特定关注。例如,行在鼠标悬停和选择时会显示阴影行为,数字值默认情况下会自动格式化,并且添加单个类可以使表格行单独或集体可选择。这使得数据表组件对于开发人员来说既方便又易于编码,并且对于用户来说既有吸引力又直观。
要包含 MDL 数据表组件
1. 编写一个<table>
元素。包括<thead>
和<tbody>
元素分别保存标题和数据行。
<table>
<thead>
</thead>
<tbody>
</tbody>
</table>
2. 使用class
属性,将一个或多个 MDL 类(用空格分隔)添加到表格。
<table class="mdl-data-table mdl-js-data-table">
<thead>
</thead>
<tbody>
</tbody>
</table>
2. 在<thead>
内,为每一列编写正好一行表格行<tr>
,其中包含一个表格标题单元格<th>
,并在标题单元格中包含所需的文本。为了确保正确的标题对齐,请将“非数字”MDL 类添加到仅包含文本的列的标题单元格。(数据单元格默认情况下格式化为数字。)
<table class="mdl-data-table mdl-js-data-table">
<thead>
<tr>
<th class="mdl-data-table__cell--non-numeric">Name</th>
<th>Age</th>
<th>ID Number</th>
</tr>
</thead>
<tbody>
</tbody>
</table>
3. 在<tbody>
内,为每一行数据编写一个表格行<tr>
,并为该行中的每一列编写一个表格数据单元格<td>
。与标题单元格一样,将“非数字”MDL 类添加到仅包含文本的数据单元格以确保正确的对齐方式。
<table class="mdl-data-table mdl-js-data-table">
<thead>
<tr>
<th class="mdl-data-table__cell--non-numeric">Name</th>
<th>Age</th>
<th>ID Number</th>
</tr>
</thead>
<tbody>
<tr>
<td class="mdl-data-table__cell--non-numeric">Don Aubrey</td>
<td>25</td>
<td>49021</td>
</tr>
<tr>
<td class="mdl-data-table__cell--non-numeric">Sophia Carson</td>
<td>32</td>
<td>10258</td>
</tr>
<tr>
<td class="mdl-data-table__cell--non-numeric">Steve Moreno</td>
<td>29</td>
<td>12359</td>
</tr>
</tbody>
</table>
数据表组件已准备好使用。
示例
一个带有“主”选择复选框和单个行选择复选框的数据表。
<table class="mdl-data-table mdl-js-data-table mdl-data-table--selectable">
<thead>
<tr>
<th class="mdl-data-table__cell--non-numeric">Material</th>
<th>Quantity</th>
<th>Unit price</th>
</tr>
</thead>
<tbody>
<tr>
<td class="mdl-data-table__cell--non-numeric">Acrylic (Transparent)</td>
<td>250</td>
<td>$2.90</td>
</tr>
<tr>
<td class="mdl-data-table__cell--non-numeric">Plywood (Birch)</td>
<td>50</td>
<td>$1.25</td>
</tr>
<tr>
<td class="mdl-data-table__cell--non-numeric">Laminate (Gold on Blue)</td>
<td>10</td>
<td>$12.35</td>
</tr>
</tbody>
</table>
一个不包含选择复选框且主要包含文本数据的数据表。
<table class="mdl-data-table mdl-js-data-table">
<thead>
<tr>
<th class="mdl-data-table__cell--non-numeric">Name</th>
<th class="mdl-data-table__cell--non-numeric">Nickname</th>
<th>Age</th>
<th class="mdl-data-table__cell--non-numeric">Living?</th>
</tr>
</thead>
<tbody>
<tr>
<td class="mdl-data-table__cell--non-numeric">John Lennon</td>
<td class="mdl-data-table__cell--non-numeric">The smart one</td>
<td>40</td>
<td class="mdl-data-table__cell--non-numeric">No</td>
</tr>
<tr>
<td class="mdl-data-table__cell--non-numeric">Paul McCartney</td>
<td class="mdl-data-table__cell--non-numeric">The cute one</td>
<td>73</td>
<td class="mdl-data-table__cell--non-numeric">Yes</td>
</tr>
<tr>
<td class="mdl-data-table__cell--non-numeric">George Harrison</td>
<td class="mdl-data-table__cell--non-numeric">The shy one</td>
<td>58</td>
<td class="mdl-data-table__cell--non-numeric">No</td>
</tr>
<tr>
<td class="mdl-data-table__cell--non-numeric">Ringo Starr</td>
<td class="mdl-data-table__cell--non-numeric">The funny one</td>
<td>74</td>
<td class="mdl-data-table__cell--non-numeric">Yes</td>
</tr>
</tbody>
</table>
配置选项
MDL CSS 类将各种预定义的视觉和行为增强应用于数据表。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-data-table |
将表格定义为 MDL 组件 | 表格元素上需要 |
mdl-js-data-table |
将基本 MDL 行为分配给表格 | 表格元素上需要 |
mdl-data-table--selectable |
应用所有/单个可选择行为(复选框) | 可选;位于表格元素上 |
mdl-data-table__header--sorted-ascending |
应用视觉样式以指示列按升序排序 | 可选;位于表头(th )上 |
mdl-data-table__header--sorted-descending |
应用视觉样式以指示列按降序排序 | 可选;位于表头(th )上 |
mdl-data-table__cell--non-numeric |
将文本格式应用于数据单元格 | 可选;位于表头和表格数据单元格上 |
(无) | 将数字格式应用于表头或数据单元格(默认) |
文本字段
文本输入组件。
<!-- Simple Textfield --> <form action="#"> <div class="mdl-textfield mdl-js-textfield"> <input class="mdl-textfield__input" type="text" id="sample1"> <label class="mdl-textfield__label" for="sample1">Text...</label> </div> </form>
<style></style><!-- Numeric Textfield --> <form action="#"> <div class="mdl-textfield mdl-js-textfield"> <input class="mdl-textfield__input" type="text" pattern="-?[0-9]*(\.[0-9]+)?" id="sample2"> <label class="mdl-textfield__label" for="sample2">Number...</label> <span class="mdl-textfield__error">Input is not a number!</span> </div> </form>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Textfield with Floating Label --> <form action="#"> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label"> <input class="mdl-textfield__input" type="text" id="sample3"> <label class="mdl-textfield__label" for="sample3">Text...</label> </div> </form>
<style></style><!-- Numeric Textfield with Floating Label --> <form action="#"> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label"> <input class="mdl-textfield__input" type="text" pattern="-?[0-9]*(\.[0-9]+)?" id="sample4"> <label class="mdl-textfield__label" for="sample4">Number...</label> <span class="mdl-textfield__error">Input is not a number!</span> </div> </form>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
<!-- Floating Multiline Textfield --> <form action="#"> <div class="mdl-textfield mdl-js-textfield"> <textarea class="mdl-textfield__input" type="text" rows= "3" id="sample5" ></textarea> <label class="mdl-textfield__label" for="sample5">Text lines...</label> </div> </form>
<style></style><!-- Expandable Textfield --> <form action="#"> <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable"> <label class="mdl-button mdl-js-button mdl-button--icon" for="sample6"> <i class="material-icons">search</i> </label> <div class="mdl-textfield__expandable-holder"> <input class="mdl-textfield__input" type="text" id="sample6"> <label class="mdl-textfield__label" for="sample-expandable">Expandable Input</label> </div> </div> </form>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 的文本字段组件是标准 HTML <input type="text">
和<input type="textarea">
元素的增强版本。文本字段由一条水平线组成,指示键盘输入可以发生的位置,并且通常带有文本,清楚地传达文本字段的预期内容。MDL 文本字段组件提供各种类型的文本字段,并允许您添加显示和点击效果。
文本字段是大多数用户界面中常见的功能,无论网站的内容或功能如何。因此,它们的设计和使用是整体用户体验中的一个重要因素。有关详细信息,请参阅文本字段组件的Material Design 规范页面。
增强的文本字段组件比标准文本字段具有更生动的视觉外观,并且可以最初或以编程方式禁用。文本字段组件中有三种主要类型的文本字段,每种都有其自己的基本编码要求。类型为单行、多行和可扩展。
要包含单行MDL 文本字段组件
1. 编写一个<div>
元素来保存文本字段。
<div>
...
</div>
2. 在 div 内,编写一个<input>
元素,其type
属性为"text"
(文本字段),以及一个您选择的id
属性。
<div>
<input type="text" id="user">
</div>
3. 还在 div 内,在文本字段之后,编写一个<label>
元素,其for
属性的值与input
元素的id
值匹配,以及一个用作字段占位符文本的短字符串。
<div>
<input type="text" id="user">
<label for="user">User name</label>
</div>
4. 可选地,向<input>
元素添加pattern
属性和值(有关详细信息,请参阅W3C HTML5 表单规范)以及在<label>
后面的<span>
元素中关联的错误消息。
<div>
<input type="text" id="user" pattern="[A-Z,a-z, ]*">
<label for="user">User name</label>
<span>Letters and spaces only</span>
</div>
5. 使用class
属性,将一个或多个 MDL 类(用空格分隔)添加到 div 容器、文本字段、字段标签和错误消息。
<div class="mdl-textfield mdl-js-textfield">
<input class="mdl-textfield__input" type="text" id="user" pattern="[A-Z,a-z, ]*">
<label class="mdl-textfield__label" for="user">User name</label>
<span class="mdl-textfield__error">Letters and spaces only</span>
</div>
单行文本字段组件已准备好使用。
示例
带有标准标签的单行文本字段。
<div class="mdl-textfield mdl-js-textfield">
<input class="mdl-textfield__input" type="text" id="fname">
<label class="mdl-textfield__label" for="fname">First name</label>
</div>
带有浮动标签的单行文本字段。
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<input class="mdl-textfield__input" type="text" id="addr1">
<label class="mdl-textfield__label" for="addr1">Address line 1</label>
</div>
带有标准标签、模式匹配和错误消息的单行文本字段。
<div class="mdl-textfield mdl-js-textfield">
<input class="mdl-textfield__input" type="text" pattern="[0-9]*" id="phone">
<label class="mdl-textfield__label" for="phone">Phone</label>
<span class="mdl-textfield__error">Digits only</span>
</div>
要包含多行MDL 文本字段组件
1. 编写一个<div>
元素来保存文本字段。
<div>
...
</div>
2. 在 div 内,编写一个<textarea>
元素,其type
属性为"text"
(多行文本字段),以及一个您选择的id
属性。包括一个rows
属性,其值为"1"
(此属性设置同时可见的输入行的数量)。
<div>
<textarea type="text" rows="1" id="address"></textarea>
</div>
3. 还在 div 内,在文本字段之后,编写一个<label>
元素,其for
属性的值与<textarea>
元素的id
值匹配,以及一个用作字段占位符文本的短字符串。
<div>
<textarea type="text" rows="1" id="address"></textarea>
<label for="address">Full address</label>
</div>
4. 使用class
属性,将一个或多个 MDL 类(用空格分隔)添加到 div 容器、文本字段和字段标签。
<div class="mdl-textfield mdl-js-textfield">
<textarea class="mdl-textfield__input" type="text" rows="1" id="address"></textarea>
<label class="mdl-textfield__label" for="address">Full address</label>
</div>
多行文本字段组件已准备好使用。
示例
带有 1 行可见输入的多行文本字段。
<div class="mdl-textfield mdl-js-textfield">
<textarea class="mdl-textfield__input" type="text" rows="1" id="schools"></textarea>
<label class="mdl-textfield__label" for="schools">Schools attended</label>
</div>
带有 1 行可见输入和浮动标签的多行文本字段。
<div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">
<textarea class="mdl-textfield__input" type="text" rows= "1" id="schools"></textarea>
<label class="mdl-textfield__label" for="schools">Schools attended</label>
</div>
带有多行可见输入和最大行数的多行文本字段。
<div class="mdl-textfield mdl-js-textfield">
<textarea class="mdl-textfield__input" type="text" rows="3" maxrows="6"
id="schools"></textarea>
<label class="mdl-textfield__label" for="schools">Schools attended (max. 6)</label>
</div>
要包含可扩展MDL 文本字段组件
1. 编写一个“外部”<div>
元素来保存可扩展文本字段。
<div>
...
</div>
2. 在 div 内,编写一个<label>
元素,其for
属性的值将与<input>
元素的id
值匹配(将在步骤 5 中编码)。
<div>
<label for="expando1">
...
</label>
</div>
3. 在标签内,编写一个<span>
元素;span 应为空,并且应为标签的唯一内容。此元素将包含可扩展文本字段的图标。
<div>
<label for="expando1">
<span></span>
</label>
</div>
4. 仍在“外部”div 内,在包含 span 的标签之后,编写一个“内部”(嵌套)<div>
元素。
<div>
<label for="expando1">
<span></span>
</label>
<div>
...
</div>
</div>
5. 在“内部”div 内,编写一个<input>
元素,其type
属性为"text"
(文本字段),以及一个id
属性,其值与步骤 2 中for
属性的值匹配。
<div>
<label for="expando1">
<span></span>
</label>
<div>
<input type="text" id="expando1">
</div>
</div>
6. 仍在“内部”div 内,在文本字段之后,编写一个<label>
元素,其for
属性的值也与<input>
元素的id
值匹配(在步骤 5 中编码),以及一个用作字段占位符文本的短字符串。
<div>
<label for="expando1">
<span></span>
</label>
<div>
<input type="text" id="expando1">
<label for="expando1">Expandable text field</label>
</div>
</div>
7. 使用class
属性,将一个或多个 MDL 类(用空格分隔)添加到“外部”div 容器、标签和 span,以及“内部”div 容器、文本字段和字段标签。
<div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable">
<label class="mdl-button mdl-js-button mdl-button--icon" for="expando1">
<i class="material-icons">search</i>
</label>
<div class="mdl-textfield__expandable-holder">
<input class="mdl-textfield__input" type="text" id="expando1">
<label class="mdl-textfield__label" for="expando1">Expandable text field</label>
</div>
</div>
可扩展文本字段组件已准备好使用。当图标(空的<span>
)被点击或获得焦点时,它将展开。
示例
带有标准标签的可扩展文本字段。
<div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable">
<label class="mdl-button mdl-js-button mdl-button--icon" for="search-expandable">
<i class="material-icons">search</i>
</label>
<div class="mdl-textfield__expandable-holder">
<input class="mdl-textfield__input" type="text" id="search-expandable">
<label class="mdl-textfield__label" for="search-expandable">Search text</label>
</div>
</div>
带有浮动标签的可扩展文本字段。
<div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable
mdl-textfield--floating-label">
<label class="mdl-button mdl-js-button mdl-button--icon" for="search-expandable2">
<i class="material-icons">search</i>
</label>
<div class="mdl-textfield__expandable-holder">
<input class="mdl-textfield__input" type="text" id="search-expandable2">
<label class="mdl-textfield__label" for="search-expandable2">
Enter search text below
</label>
</div>
</div>
配置选项
MDL CSS 类将各种预定义的视觉和行为增强应用于文本字段。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-textfield |
将容器定义为 MDL 组件 | “外部”div 元素上必需 |
mdl-js-textfield |
将基本 MDL 行为分配给输入 | “外部”div 元素上必需 |
mdl-textfield__input |
将元素定义为文本字段输入 | 输入或文本区域元素上需要 |
mdl-textfield__label |
将元素定义为文本字段标签 | 输入或文本区域元素的标签元素上需要 |
mdl-textfield--floating-label |
应用浮动标签效果 | 可选;位于“外部”div 元素上 |
mdl-textfield__error
|
将span定义为MDL错误消息 | 可选;用于带有pattern属性的MDL输入元素的span元素 |
mdl-textfield--expandable |
将div定义为MDL可扩展文本字段容器 | 对于可扩展输入字段,在“外部”div元素上需要此类 |
mdl-button |
将label定义为MDL图标按钮 | 对于可扩展输入字段,在“外部”div的label元素上需要此类 |
mdl-js-button |
为图标容器分配基本行为 | 对于可扩展输入字段,在“外部”div的label元素上需要此类 |
mdl-button--icon |
将label定义为MDL图标容器 | 对于可扩展输入字段,在“外部”div的label元素上需要此类 |
mdl-input__expandable-holder |
将容器定义为MDL组件 | 对于可扩展输入字段,在“内部”div元素上需要此类 |
is-invalid |
在初始加载时将文本字段定义为无效。 | 在mdl-textfield 元素上可选 |
(1)此处“搜索”图标用作示例。可以通过修改文本使用其他图标。有关可用图标的列表,请参阅此页面。
注意:提供了每种文本字段类型的禁用版本,并使用标准HTML布尔属性
disabled
调用。<input class="mdl-textfield mdl-js-textfield" type="text" disabled>
可以通过脚本以编程方式添加或删除此属性。
工具提示
悬停时显示的有用信息。
<!-- Simple Tooltip --> <div id="tt1" class="icon material-icons">add</div> <div class="mdl-tooltip" data-mdl-for="tt1"> Follow </div>
<style></style><!-- Large Tooltip --> <div id="tt2" class="icon material-icons">print</div> <div class="mdl-tooltip mdl-tooltip--large" for="tt2"> Print </div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
通过社交媒体
<!-- Rich Tooltip --> <div id="tt3" class="icon material-icons">cloud_upload</div> <div class="mdl-tooltip" data-mdl-for="tt3"> Upload <strong>file.zip</strong> </div>
<style></style><!-- Multiline Tooltip --> <div id="tt4" class="icon material-icons">share</div> <div class="mdl-tooltip" for="tt4"> Share your content<br>via social media </div>
<style></style><style> body { padding: 20px; background: #fafafa; position: relative; } </style>
简介
Material Design Lite (MDL) 工具提示组件是标准HTML工具提示(由title
属性生成)的增强版本。工具提示包含文本和/或图像,当用户将鼠标悬停在元素上或在基于触摸的UI中触摸元素时,清晰地传达有关元素的其他信息。MDL工具提示组件是预先设置样式的(颜色、字体和其他设置包含在material.min.css中),以提供生动、吸引人的视觉元素,显示相关但通常是非必要的內容,例如定义、澄清或简短说明。
工具提示是大多数用户界面的普遍功能,无论网站的内容或功能如何。它们的设计和使用是整体用户体验中的一个重要因素。有关详细信息,请参阅工具提示组件的Material Design规范页面。
要包含MDL 工具提示组件
1. 编写一个元素,例如<div>
、<p>
或<span>
,并根据需要对其进行样式设置;这将是工具提示的目标。包含一个id
属性和唯一值以将容器链接到其工具提示。
<p id="tt1">HTML</p>
2. 在目标元素之后,编写第二个元素,例如<div>
、<p>
或<span>
;这将是工具提示本身。包含一个for
(或data-mdl-for
)属性,其值与目标的id
值匹配。
<p id="tt1">HTML</p>
<span for="tt1">HyperText Markup Language</span>
3. 使用class
属性,将一个或多个MDL类(用空格分隔)添加到工具提示元素。
<p id="tt1">HTML</p>
<span for="tt1" class="mdl-tooltip">HyperText Markup Language</span>
工具提示组件已准备好使用。
示例
带有简单文本工具提示的目标。
<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
<span class="mdl-tooltip" for="xml">eXtensible Markup Language</span>
带有“丰富”(包含HTML标记)工具提示文本的目标。
<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
<span class="mdl-tooltip" for="xml">e<b>X</b>tensible <b>M</b>arkup <b>L</b>anguage</span>
带有长文本工具提示(自动换行)的目标。
<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
<span class="mdl-tooltip" for="xml">XML is an acronym for eXtensible Markup Language</span>
带有更大字体大小的工具提示文本的目标。
<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
<span class="mdl-tooltip mdl-tooltip--large" for="xml">eXtensible Markup Language</span>
带有包含图像和文本的工具提示的目标。
<p>HTML is related to but different from <span id="xml"><i>XML</i></span>.</p>
<span class="mdl-tooltip" for="xml">
<img src="xml-logo-small.png" width="20" height="10"> eXtensible Markup Language</span>
配置选项
MDL CSS类为工具提示应用各种预定义的视觉增强功能。下表列出了可用的类及其效果。
MDL 类 | 效果 | 备注 |
---|---|---|
mdl-tooltip |
将容器定义为MDL工具提示 | 在工具提示容器元素上需要此类 |
mdl-tooltip--large |
应用大字体效果 | 可选;用于工具提示容器元素 |
mdl-tooltip--left |
将工具提示定位在目标的左侧 | 可选;用于工具提示容器元素 |
mdl-tooltip--right |
将工具提示定位在目标的右侧 | 可选;用于工具提示容器元素 |
mdl-tooltip--top |
将工具提示定位在目标的顶部 | 可选;用于工具提示容器元素 |
mdl-tooltip--bottom |
将工具提示定位在目标的底部 | 可选;用于工具提示容器元素 |