material-UI 是如何做出响应的
How is material-UI made responsive
我今天发现了这个很棒的 UI 框架并花了很多时间浏览文档,我必须说,我已经爱上了它。现在我想将它用于一个中等规模的项目,但我有两个顾虑:
- 我找不到任何网格系统,我该如何布局?
- 如何让它响应?
我有使用 Zurb 的基础的经验,它有一个完善的网格系统和响应组件。现在你知道我来自哪里了。
是的,当我第一次开始使用 Material-UI 时,我错过了一个网格系统,但我已经习惯了它的响应方式。我怀疑因为它支持内联样式,所以网格方法并不理想。所以,这是让它响应屏幕尺寸的方法:
import React from 'react'
import {Mixins} from 'material-ui'
const {StylePropable, StyleResizable} = Mixins
export default React.createClass({
// Boilerplate and React lifecycle methods
propTypes: {
onChangeMuiTheme: React.PropTypes.func,
},
contextTypes: {
muiTheme: React.PropTypes.object,
},
mixins: [StylePropable, StyleResizable],
getInitialState() {
return {
}
},
// Helpers
getStyles() {
let styles = {
text: {
fontSize: 12,
color: this.context.muiTheme.rawTheme.palette.primary1Color
}
}
// example of a screen-size sensitive style
if (this.isDeviceSize(StyleResizable.statics.Sizes.MEDIUM)) { // active for >= MEDIUM
styles.text.fontSize = 20
}
return styles
},
render() {
let styles = this.getStyles()
return (
<p style={styles.text}>Hello world!</p>
)
}
})
我今天发现了这个很棒的 UI 框架并花了很多时间浏览文档,我必须说,我已经爱上了它。现在我想将它用于一个中等规模的项目,但我有两个顾虑:
- 我找不到任何网格系统,我该如何布局?
- 如何让它响应?
我有使用 Zurb 的基础的经验,它有一个完善的网格系统和响应组件。现在你知道我来自哪里了。
是的,当我第一次开始使用 Material-UI 时,我错过了一个网格系统,但我已经习惯了它的响应方式。我怀疑因为它支持内联样式,所以网格方法并不理想。所以,这是让它响应屏幕尺寸的方法:
import React from 'react'
import {Mixins} from 'material-ui'
const {StylePropable, StyleResizable} = Mixins
export default React.createClass({
// Boilerplate and React lifecycle methods
propTypes: {
onChangeMuiTheme: React.PropTypes.func,
},
contextTypes: {
muiTheme: React.PropTypes.object,
},
mixins: [StylePropable, StyleResizable],
getInitialState() {
return {
}
},
// Helpers
getStyles() {
let styles = {
text: {
fontSize: 12,
color: this.context.muiTheme.rawTheme.palette.primary1Color
}
}
// example of a screen-size sensitive style
if (this.isDeviceSize(StyleResizable.statics.Sizes.MEDIUM)) { // active for >= MEDIUM
styles.text.fontSize = 20
}
return styles
},
render() {
let styles = this.getStyles()
return (
<p style={styles.text}>Hello world!</p>
)
}
})