- 元件
- Material Design Lite (MDL) 是一個為網頁開發者提供的元件庫,基於 Google 的 Material Design 理念:「一種為使用者設計的視覺語言,它結合了優秀設計的經典原則,以及科技和科學的創新和可能性。」 了解 Material Design 的目標和原則對於正確使用 Material Design Lite 元件至關重要。如果您尚未閱讀 Material Design 簡介,您應該在嘗試使用這些元件之前先閱讀它。
徽章
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
值通常應包含一到三個字元。超過三個字元不會造成錯誤,但某些字元可能會超出徽章範圍,因此難以或無法看到。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 或 link 上必需 |
mdl-badge--no-background |
將空心圓效果套用至徽章 | 選用 |
mdl-badge--overlap |
使徽章與其容器重疊 | 選用 |
data-badge="value" |
將字串值賦予徽章 | 不是類別,而是單獨的屬性;span 或 link 上必需 |
卡片
包含資料的獨立紙片。
歡迎
<!-- 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>
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. 使用標準 HTML 元素,以及選擇性地使用其他 MDL 類別,將內容新增到每個「內部」div 中,同樣取決於其預期用途。
<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。
在您獲得對話框支援後,建立一個 dialog 元素。使用 polyfill 時,該元素必須是 body
元素的子元素。在該容器內,新增一個帶有 mdl-dialog__content
類別的內容元素。新增您的內容,然後建立一個帶有 mdl-dialog__actions
類別的操作容器。最後,對於標記,請在此容器內新增按鈕以觸發對話框功能。
請記住,操作的順序會自動反轉。Material Design 要求主要(確認)操作顯示在最後。因此,您建立的第一個操作將顯示在操作列的最後。這允許更自然的編碼和 Tab 鍵順序,同時遵循規範。
請記得為您的操作項目新增事件處理程式。建立對話框標記後,將事件監聽器新增到頁面以觸發顯示對話框。
例如
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 佈局內容 | main 元素上必須使用 |
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) 網格元件是一種簡化的多螢幕尺寸內容排版方法。它減少了在各種顯示條件下正確顯示內容區塊所需的 üblich 編碼負擔。
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
類別(其中 COLUMN 指定儲存格的欄大小)新增至「內部」div。
<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>
</div>
3. 在第一個「內部」div(標籤)內,為每個標籤編寫一個錨點 <a>
(連結)標籤。包含 href
屬性,其值與標籤的 id
屬性值匹配,以及一些簡短的連結文字。在剩餘的「內部」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 |
is-active | 將標籤定義為預設顯示標籤 |
在「內部」div(標籤)元素之一(且僅限一個)上是必需的 |
mdl-tabs__panel | 將容器定義為標籤內容 |
頁尾
<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 |
將 input 元素定義為 MDL 組件 | 必需 |
mdl-js-slider |
將基本的 MDL 行為分配給 input 元素 | 必需 |
**注意:**提供了滑桿的停用版本,並使用標準 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 和 aria-atomic 值也是有益的。
在容器內建立一個訊息的容器元素。此元素應具有 mdl-snackbar__text
類別。將此元素留空!文字是在呼叫顯示 snackbar 時添加的。
在容器中的第二個位置,添加一個 button 元素。此元素應具有 mdl-snackbar__action
類別。建議將 type 設定為 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 行為應用於標題 | span 元素(標題)的必要屬性 |
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 行為應用於標題 | span 元素(標題)的必要屬性 |
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 行為應用於標題 | span 元素(標題)的必要屬性 |
mdl-js-ripple-effect |
套用漣漪點擊效果 | 可選;用於標籤元素,而非輸入元素(開關) |
注意:提供了所有可用開關類型的禁用版本,並使用標準 HTML 布林屬性
disabled
呼叫。<input type="checkbox" id="switch5" class="mdl-switch__input" disabled>
可以透過腳本以程式設計方式添加或移除此屬性。
表格
整理資料。
Material | 數量 | 單價 |
---|---|---|
壓克力(透明) | 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. (選用)將 pattern
屬性和值新增至 <input>
元素(詳情請參閱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>
多行文字欄位元件已可使用。
範例
具有一條可見輸入行的多行文字欄位。
<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>
具有一條可見輸入行和浮動標籤的多行文字欄位。
<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 |
將元素定義為文字欄位輸入 | 輸入或 textarea 元素的必要項目 |
mdl-textfield__label |
將元素定義為文字欄位標籤 | 輸入或 textarea 元素的 label 元素的必要項目 |
mdl-textfield--floating-label |
套用_浮動標籤_效果 | 可選;位於「外部」div 元素上 |
mdl-textfield__error |
將 span 定義為 MDL 錯誤訊息 | 選用;用於具有_模式_的 MDL 輸入元素的 span 元素 |
mdl-textfield--expandable |
將 div 定義為 MDL 可展開文字欄位容器 | 對於可展開輸入欄位,「外部」div 元素的必要項目 |
mdl-button |
將標籤定義為 MDL 圖示按鈕 | 對於可展開輸入欄位,「外部」div 的 label 元素的必要項目 |
mdl-js-button |
將基本行為指派給圖示容器 | 對於可展開輸入欄位,「外部」div 的 label 元素的必要項目 |
mdl-button--icon |
將標籤定義為 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
屬性產生。工具提示包含文字和/或圖像,當使用者將滑鼠懸停在元素上或在觸控式使用者介面中觸控元素時,會清楚地傳達有關該元素的其他資訊。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 |
將工具提示放置在目標的底部 | 選用;用於工具提示容器元素 |