我正在尝试设置Material UI Select
组件的宽度。为此,我必须为FormControl
组件提供一个类,例如mw-120
,它链接到定义120 px的min-width
的CSS类。
材质UI选择组件:
<FormControl className='mw-120'>
<InputLabel htmlFor='selected-language'>Language</InputLabel>
<Select value={this.state.selectedLanguage}
onChange={(e) => this.onLanguageChange(e.target.value)}
inputProps={{
name: 'language',
id: 'selected-language',
}}>
{menuItems}
</Select>
</FormControl>
CSS类:
.mw-120 {
min-width: 120px;
}
虽然我希望Select
组件的大小现在至少有120 px的宽度,但该组件在渲染后保持完全相同,如下图所示。换句话说,就是缩小。宽度不够大。宽度应大于标签Language
。
Chrome开发工具中的元素分析显示,该组件的主DIV元素有一个包含min-width: 0;
的类.MuiFormControl-root-234
,并且它的位置/排名高于我的.mw-120
类。我猜这会覆盖我的.mw-120
类,对吧?是否有其他方法可以影响Material UI Select组件的宽度?没有影响Material UI Select component page上此组件宽度的有用示例。
4条答案
按热度按时间wixjitnu1#
如果你正在做一些一次性的样式,你可以使用内联样式,它对我很有效。
如果您想在更多的代码中重用它,并希望避免代码重复,您可能希望使用Themes。
hs1rzwqc2#
为了潜在的重用,官方文档示例使用
makeStyles
完成了这一点,如下所示:然后
useStyles
生成如下的类名:然后像这样添加到
FormControl
组件:Stack Snippets中的Demo
qgelzfjb3#
材质界面v5**中可以使用
sx
prop 。请注意,下面的示例使用了一个selectTextField
,它与Select
基本相同,只是它可以显示标签和帮助器文本。有关TextField
如何工作的更多详细信息,请参阅this答案。gjmwrych4#
在我们的例子中,选择器
.MuiFormControl-root
和.mv-120
具有相同的特殊性,因此声明它们的顺序很重要。生成的样式最后注入页面的<head>
部分,当自定义样式也放置在此部分时,它们具有较低的优先级:但是,当自定义样式位于
<body>
部分时,它们优先:还有其他方法可以控制生成的
<style>
标记的放置,这里将介绍这些方法。