参考代码
徽章/Badge
向用户提供了发现额外信息的视觉线索,它一般是圆型,内容为数字或其余字母,紧贴在宿主元素旁边:git
徽章能够用来无侵入
地吸引用户的注意力,例如:github
一个新消息
通知可使用徽章提醒有几条未读信息正则表达式
一个购物车未付款
提醒可使用徽章提醒购物车内的商品数量ide
一个加入讨论!
按钮可使用徽章提示当前已经加入讨论的用户数动画
使用MDL徽章
组件很简单,为宿主元素添加mdl-badge
样式类,而后在data-badge
中设置徽章内容:spa
<any class="mdl-badge" data-badge="1">...</any>
由于徽章组件的尺寸很小,因此不要放太多内容,一般data-badge
的值设置为1~3
个字符。设计
当鼠标移动到元素上方时,提示框/Tooltip
组件能够为界面元素提供额外的信息:code
在MDL
中,为一个元素添加Tooltip
的步骤以下:orm
<!--1. 为宿主元素定义一个id --> <button id="test">TEST</button> <!--2. 声明一个tooltip组件,使用*for*属性绑定到宿主元素上--> <div class="mdl-tooltip" for="test">这个按钮没什么用;-(</div>
尽管在提示框内可使用HTML
片断,可是Material Design
设计语言不建议在提示框中加入图片等复杂的元素。视频
MDL
的按钮/Button
组件是标准HTML
元素button
的加强版本。按钮组件有多种类型,而且能够添加显示及点击效果:
MDL
按钮的显示类型包括:flat
, raised
, fab
, mini-fab
, icon
. 这些类型均可以设置为浅灰或彩色
,也能够禁止。fab
, mini-fab
和icon
类型的按钮一般使用一个小图像而不是文字来表征其功能。
使用按钮组件很简单,为button
元素声明mdl-button
、mdl-js-button
及其余可选的修饰样式类便可:
<!--缺省的扁平/flat按钮--> <button class="mdl-button mdl-js-button">Save</button> <!--凸起/raised按钮--> <button class="mdl-button mdl-js-button mdl-button--raised">Save</button> <!--浮动动做/FAB按钮--> <button class="mdl-button mdl-js-button mdl-button--fab">Save</button> <!--迷你浮动动做/MINI-FAB按钮--> <button class="mdl-button mdl-js-button mdl-button--fab mdl-button--mini-fab">Save</button> <!--彩色凸起/raised按钮--> <button class="mdl-button mdl-js-button mdl-button--raised mdl-button--colored">Save</button> <!--具备点击动效的凸起/raised按钮--> <button class="mdl-button mdl-js-button mdl-button--raised mdl-js-ripple-effect">Save</button>
菜单/menu
组件提供一组选项供用户选择,用户的选择将执行一个动做、变化设置或 其余能够观察到的效果。当须要用户选择时,显示菜单,当用户完成选择时,关闭菜单:
菜单是成熟然而未标准化的界面组件。
使用mdl-menu
样式类声明菜单,使用mdl-menu__item
样式类声明菜单项:
<any class="mdl-menu mdl-js-menu"> <any class="mdl-menu__item">...</any> <any class="mdl-menu__item">...</any> </any>
MDL
的滑动条/slider
组件是HTML5
新增元素range input
的加强版本。 滑动条由一条水平线及其上的可移动滑块构成。当用户移动滑块时,就能够 从预设范围中选择一个值(左边是下界,右边是上界):
使用MDL
的滑动条组件很简单,为range input
元素应用样式类mdl-slider
和mdl-js-slider
便可:
<input type="range" min="0" max="100" class="mdl-slider mdl-js-slider" >
使用range input
元素的min
和max
属性来设定值的范围,使用value
属性来设置滑动条的初始值:
<input type="range" min="0" max="100" value="25" class="mdl-slider mdl-js-slider" >
MDL
的复选按钮/Checkbox
组件是标准HTML
元素checkbox input
的加强版本。复选按钮组件包含一个标签和一个开关选择按钮:
MDL
的复选按钮/Checkbox
组件具备预约义的HTML
结构:
<!--1. 声明组件容器--> <label class="mdl-checkbox"> <!--2. 为checkbox input元素应用mdl样式类--> <input type="checkbox" class="mdl-checkbox__input"/> <!--3. 为标签元素应用mdl样式类--> <span class="mdl-checkbox__label">标签</span> </label>
可使用checkbox input
元素的checked
属性设置复选按钮组件的初始选中状态。
MDL
的单选按钮/RadioButton
组件是标准HTML
元素radio input
的加强版本。 单选按钮组件包含一个标签和一个开关选择按钮
:
MDL
的单选按钮组件具备固定的HTML
结构:
<!--1. 声明组件容器--> <label class="mdl-radio mdl-js-radio"> <!--2.为input子元素应用mdl样式类--> <input type="radio" class="mdl-radio__button" name="options" value="1"/> <!--3.为label子元素应用mdl样式类--> <span class="mdl-radio__label">选项1</span> </label> <!--选项2--> <label class="mdl-radio mdl-js-radio"> <input type="radio" class="mdl-radio__button" name="options" value="2"/> <span class="mdl-radio__label">选项2</span> </label>
和复选按钮不一样,多个同时出现的单选按钮组件,其选中状态是互斥的,任什么时候刻最多只有一个能够被选中。
和复选按钮相似,使用radio input
元素的checked
属性设置单选按钮的选中状态。
MDL
的图标开关/IconToggle
组件是标准HTML
元素checkbox input
的加强版本。图标开关组件包含一个标签和一个用户指定的图标按钮
,图标的着色与否用来传达 当前选项是否被选中:
MDL
的图标开关/IconToggle
组件具备预约义的HTML
结构:
<!--1. 声明组件容器--> <label class="mdl-icon-toggle mdl-js-icon-toggle"> <!--2. 为checkbox input元素应用mdl样式类--> <input type="checkbox" class="mdl-icon-toggle__input"/> <!--3. 为图标元素应用mdl样式类--> <i class="mdl-icon-toggle__label material-icons">format_bold</i> </label>
MDL
的进度条/progress bar
组件用来提供后台活动的可视化反馈
。进度条是一个水平的长条,能够包含动画以传递工做中的感受:
使用MDL进度条/Progress bar
组件很简单:
<any class="mdl-progress mdl-js-progress "></any>
若是不须要提供给用户进度完成的具体百分比,能够附加一个动画:
<any class="mdl-progress mdl-js-progress mdl-progress__indeterminate"></any>
若是须要显示进度百分比,须要使用挂接在DOM对象
上的MaterialProgress
变量的setProgress()
方法:
var el = document.querySelector("#p1"); //setProgress()方法接受一个0~100的值 el.MaterialProgress.setProgress(80);
若是须要同时显示一个视频流的缓冲及播放状况
,可使用MaterialProgress
变量的setBuffer()
方法,这个方法将对未缓冲的部分播放一个动画来表达缓冲效果:
var el = document.querySelector("#p1"); //setBuffer()方法接受一个0~100的值 el.MaterialProgress.setBuffer(80);
MDL
的等待指示器/spinner
组件是等待图标的加强版本,它使用一个边框色彩动态变化的圆框,清晰地向用户传达做业已经开始、还未完成的情况:
使用spinner
组件很是简单:
<any class="mdl-spinner mdl-js-spinner"></any>
spinner
默认是隐藏
的,为其应用is-active
样式进行激活:
<any class="mdl-spinner mdl-js-spinner is-active"></any>
MDL
的文本输入/Text Field
组件是对标准HTMLtext input
元素的封装:
文本输入
组件有特定的HTML
结构:
<!--1.声明组件--> <div class="mdl-textfield mdl-js-textfield"> <!--2.声明组件的input元素--> <input type="text" class="mdl-textfield__input"/> <!--3.声明组件的label元素--> <label class="mdl-textfield__label">Your Name</label> <!--4.声明组件的error元素--> <span class="mdl-textfield__error">Error!</span> </div>
error
元素默认是隐藏的,用来向用户反馈输入的错误。能够为input
元素设置pattern
属性(这是HTML5
的新特性),当用户的输入与pattern
指定的正则表达式不符时,将显示error
元素:
<input type="text" pattern="-?[0-9]*(\.[0-9]+)?"/>
上面的正则表达式将检测用户的输入是不是一个数值,例如:-123.456
。
默认状况下,当用户开始输入时,标签将消失。能够为组件应用mdl-textfield--floating-label
样式开启浮动标签模式:
<!--用户输入时,标签将浮动在输入行上方--> <div class="mdl-textfield mdl-js-textfield mdl-textfield--floating-label">...</div>
也能够将input
元素换成textarea
元素,这样将容许多行输入:
<div class="mdl-textfield mdl-js-textfield"> <!--使用rows属性声明行数--> <textarea class="mdl-textfield__input" rows="3"></textarea> <label class="mdl-textfield__label">Memo</label> </div>
一种常见的文本输入模式具备一个按钮,点击这个按钮将展开输入框,若是没有输入内容,那么当输入框失去焦点时将自动隐藏:
动态展开的文本输入组件有特定的HTML
结构:
<!--1.使用expandable样式类声明动态展开的文本输入组件--> <div class="mdl-textfield mdl-js-textfield mdl-textfield--expandable"> <!--2. 声明触发按钮,使用属性for绑定到input元素--> <button class="mdl-button mdl-js-button" for="kw_inp">search</button> <!--3. 声明文本输入框容器--> <div class="mdl-textfield__expandable-holder"> <!--4.声明input元素,使用属性id声明锚点--> <input type="text" class="mdl-textfield__input" id="kw_inp"/> <!--5.声明label元素--> <label class="mdl-textfield__label">keywords</label> </div> </div>
MDL
的数据表/Data table
组件用来呈现密集的数据集
:
使用很简单,为table
元素应用样式便可: