Material UI 是一款功能很强大。界面却十分清新简洁的CSS框架。Material UI利用了Google的Material Design 全新设计语言,而且让每个UI组件都变得很独立。因此开发人员使用Material UI也会比較简单。

和Bootstrap类似。Material UI提供了非常多经常使用的UI组件,除了最主要的菜单、button、滑动杆、进度条、单选框/复选框外。它还提供了一个非常有趣的日历组件,另外还提供了一些非常有趣的图标。

Material UI 的特点

  • 组件非常丰富。每个组件的风格比較一致。
  • 提供了 npm 包的形式。使用起来相对照较方便。
  • 这一切都是开源的,你能够随意使用这个开源的CSS框架。

Material UI 的应用实例

首先我们从最主要的看起。

菜单

以下是一个简单的多级下拉菜单

代码例如以下:

nestedMenuItems = [
{ type: mui.MenuItem.Types.NESTED, text: 'Reports', items: [
{ payload: '1', text: 'Nested Item 1' },
{ type: mui.MenuItem.Types.NESTED, text: 'Nested Item 2', items: [
{ payload: '1', text: 'Nested Item 2.1' },
{ type: mui.MenuItem.Types.NESTED, text: 'Nested Item 2.2', items: [
{ payload: '1', text: 'Nested Item 2.2.1' },
{ payload: '3', text: 'Nested Item 2.2.2' }
] },
{ payload: '3', text: 'Nested Item 2.3' }
] },
{ payload: '3', text: 'Nested Item 3' },
{ type: mui.MenuItem.Types.NESTED, text: 'Nested Item 4', items: [
{ payload: '1', text: 'Nested Item 4.1' },
{ type: mui.MenuItem.Types.NESTED, text: 'Nested Item 4.2', items: [
{ payload: '1', text: 'Nested Item 4.2.1', disabled: true },
{ payload: '3', text: 'Nested Item 4.2.2' }
] },
{ payload: '3', text: 'Nested Item 4.3' }
] },
{ payload: '4', text: 'Nested Item 5' }
] },
{ payload: '1', text: 'Audio Library'},
{ payload: '2', text: 'Settings'},
{ payload: '3', text: 'Logout', disabled: true}
];

<Menu menuItems={nestedMenuItems} autoWidth={false}/>


以下是一个带图标的垂直菜单

代码例如以下:

//iconClassName is the classname for our icon that will get passed into mui.FontIcon
iconMenuItems = [
{ payload: '1', text: 'Live Answer', iconClassName: 'muidocs-icon-communication-phone', number: '10' },
{ payload: '2', text: 'Voicemail', iconClassName: 'muidocs-icon-communication-voicemail', number: '5' },
{ payload: '3', text: 'Starred', iconClassName: 'muidocs-icon-action-stars', number: '3' },
{ payload: '4', text: 'Shared', iconClassName: 'muidocs-icon-action-thumb-up', number: '12' }
];

<Menu menuItems={iconMenuItems} autoWidth={false}/>


button

以下是简单的彩色button。点击button会出现波浪扩散的动画效果。

代码例如以下:

//Raised Buttons
<RaisedButton label="Default" />
<RaisedButton label="Primary" primary={true} />
<RaisedButton label="Secondary" secondary={true} />
<div style={styles.container}>
<RaisedButton primary={true} label="Choose an Image">
<input type="file" style={styles.exampleImageInput}></input>
</RaisedButton>
</div>
<div style={styles.container}>
<RaisedButton linkButton={true} href="https://github.com/callemall/material-ui" secondary={true} label="Github">
<FontIcon style={styles.exampleButtonIcon} className="muidocs-icon-custom-github"/>
</RaisedButton>
</div>
<RaisedButton label="Disabled" disabled={true} />


美化单选框复选框

以下是Material UI经过美化过的单选框和复选框

代码例如以下:

<RadioButtonGroup name="shipSpeed" defaultSelected="not_light">
<RadioButton
value="light"
label="prepare for light speed"
style={{marginBottom:16}} />
<RadioButton
value="not_light"
label="light speed too slow"
style={{marginBottom:16}}/>
<RadioButton
value="ludicrous"
label="go to ludicrous speed"
style={{marginBottom:16}}
disabled={true}/>
</RadioButtonGroup>


日历组件

这是个人认为最美丽的CSS日历组件

代码例如以下:

//Portrait Dialog
<DatePicker
hintText="Portrait Dialog"

//Landscape Dialog
<DatePicker
hintText="Landscape Dialog"
mode="landscape"/>

// Ranged Date Picker
<DatePicker
hintText="Ranged Date Picker"
autoOk={this.state.autoOk}
minDate={this.state.minDate}
maxDate={this.state.maxDate}
showYearSelector={this.state.showYearSelector} />


Material UI还有非常多实用的CSS UI组件,你能够前往其官方站点下载及学习使用。