如何让输入单选元素在 React [material-ui] 中水平对齐?
How can I get input radio elements to horizontally align in react [material-ui]?
单选组总是在material-ui中垂直列出。有没有办法水平对齐它们?例如一条水平线上的所有单选按钮。
连续呈现单选按钮:
<RadioButtonGroup style={{ display: 'flex' }}>
要根据内容重置尺寸:
<RadioButton style={{ width: 'auto' }} />
我还不能发表评论,但要补充一下@lambdakris 所说的内容:
您可能还需要添加 flexDirection:'row'。进行这些更改而不是使用内联样式的最简单方法是将 css 添加到样式对象和 material-ui 已经使用的 class。
const styled = theme => ({
formControl: {
margin: theme.spacing.unit * 3,
width: "100%", //parent of radio group
},
group: {
flexDirection: 'row',
justifyContent: 'space-around',
}
});
...........
<RadioButtonGroup className={classes.group}>
对于那些仍在挣扎的人,请使用这种风格:
const styles = theme => ({
group: {
width: 'auto',
height: 'auto',
display: 'flex',
flexWrap: 'nowrap',
flexDirection: 'row',
}
});
class MyComponent extends React.Component {
render() {
const { classes } = this.props;
<RadioGroup className={classes.group} ...>
}
};
export default withStyles(styles)(MyComponent);
只需使用 row
property:
<RadioGroup row><Radio /><Radio /></RadioGroup>
RadioGroup
inherits from FormGroup
所以 FormGroup
组件的属性也可用。
另一个例子,带有标签:
<RadioGroup aria-label="anonymous" name="anonymous" value={false} row>
<FormControlLabel value="true" control={<Radio />} label="Yes" />
<FormControlLabel value="false" control={<Radio />} label="No" />
</RadioGroup>
只需在 RadioGroup 控件上添加属性 row={true}。
<RadioGroup
aria-label="Location"
name="location"
className={classes.group}
value={location}
onChange={handleChange}
row={true}
>
<FormControlLabel value="company" control={<Radio />} label="Company" />
<FormControlLabel value="home" control={<Radio />} label="Home" />
<FormControlLabel value="other" control={<Radio />} label="Other" />
</RadioGroup>
您只需在<RadioGroup>
中提及row
。
您可以这样编写代码:
<FormControl component="fieldset">
<FormLabel >Lable</FormLabel>
<RadioGroup aria-label="overall_sal" name="Overall SAL" value={value} onChange={handleChange} row>
<FormControlLabel value="low" control={<Radio />} label="Low" />
</RadioGroup>
</FormControl>
单选组总是在material-ui中垂直列出。有没有办法水平对齐它们?例如一条水平线上的所有单选按钮。
连续呈现单选按钮:
<RadioButtonGroup style={{ display: 'flex' }}>
要根据内容重置尺寸:
<RadioButton style={{ width: 'auto' }} />
我还不能发表评论,但要补充一下@lambdakris 所说的内容: 您可能还需要添加 flexDirection:'row'。进行这些更改而不是使用内联样式的最简单方法是将 css 添加到样式对象和 material-ui 已经使用的 class。
const styled = theme => ({
formControl: {
margin: theme.spacing.unit * 3,
width: "100%", //parent of radio group
},
group: {
flexDirection: 'row',
justifyContent: 'space-around',
}
});
...........
<RadioButtonGroup className={classes.group}>
对于那些仍在挣扎的人,请使用这种风格:
const styles = theme => ({
group: {
width: 'auto',
height: 'auto',
display: 'flex',
flexWrap: 'nowrap',
flexDirection: 'row',
}
});
class MyComponent extends React.Component {
render() {
const { classes } = this.props;
<RadioGroup className={classes.group} ...>
}
};
export default withStyles(styles)(MyComponent);
只需使用 row
property:
<RadioGroup row><Radio /><Radio /></RadioGroup>
RadioGroup
inherits from FormGroup
所以 FormGroup
组件的属性也可用。
另一个例子,带有标签:
<RadioGroup aria-label="anonymous" name="anonymous" value={false} row>
<FormControlLabel value="true" control={<Radio />} label="Yes" />
<FormControlLabel value="false" control={<Radio />} label="No" />
</RadioGroup>
只需在 RadioGroup 控件上添加属性 row={true}。
<RadioGroup
aria-label="Location"
name="location"
className={classes.group}
value={location}
onChange={handleChange}
row={true}
>
<FormControlLabel value="company" control={<Radio />} label="Company" />
<FormControlLabel value="home" control={<Radio />} label="Home" />
<FormControlLabel value="other" control={<Radio />} label="Other" />
</RadioGroup>
您只需在<RadioGroup>
中提及row
。
您可以这样编写代码:
<FormControl component="fieldset">
<FormLabel >Lable</FormLabel>
<RadioGroup aria-label="overall_sal" name="Overall SAL" value={value} onChange={handleChange} row>
<FormControlLabel value="low" control={<Radio />} label="Low" />
</RadioGroup>
</FormControl>