如何在 Select 元素旁边显示图标而不遮挡箭头
How to display an icon next to a Select element without obscuring the arrow
我正尝试在输入后添加一个帮助图标 here. It looks fine for Input elements. I tried to do the same for Select elements, but it screws up the down arrow of the Select as can be seen in this codesandbox
<Select
labelId="demo-simple-select-label"
id="demo-simple-select-adornment"
value={age}
onChange={handleChange}
endAdornment={
<InputAdornment position="end">
<HelpOutline />
</InputAdornment>
}
>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
关于如何实现这一点有什么想法吗?
看看这个 issue thread - 这似乎是一个他们目前不打算解决的已知问题。
不过,你也可以找到这个quick and dirty fix suggested there, and here is how it can be applied to the example you provided in the sandbox。
tl;dr:您可以使用 position: "relative"
覆盖 select-图标样式:
const useStyles = makeStyles(theme => ({
formControl: {
margin: theme.spacing(1),
minWidth: 120
},
selectEmpty: {
marginTop: theme.spacing(2)
},
selectIcon: {
position: "relative"
}
}))
...
<Select
labelId="demo-simple-select-label"
id="demo-simple-select-adornment"
value={age}
onChange={handleChange}
classes={{
icon: classes.selectIcon //overriding the select-icon style
}}
endAdornment={
<InputAdornment position="end">
<HelpOutline />
</InputAdornment>
}
>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
我正尝试在输入后添加一个帮助图标 here. It looks fine for Input elements. I tried to do the same for Select elements, but it screws up the down arrow of the Select as can be seen in this codesandbox
<Select
labelId="demo-simple-select-label"
id="demo-simple-select-adornment"
value={age}
onChange={handleChange}
endAdornment={
<InputAdornment position="end">
<HelpOutline />
</InputAdornment>
}
>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>
关于如何实现这一点有什么想法吗?
看看这个 issue thread - 这似乎是一个他们目前不打算解决的已知问题。
不过,你也可以找到这个quick and dirty fix suggested there, and here is how it can be applied to the example you provided in the sandbox。
tl;dr:您可以使用 position: "relative"
覆盖 select-图标样式:
const useStyles = makeStyles(theme => ({
formControl: {
margin: theme.spacing(1),
minWidth: 120
},
selectEmpty: {
marginTop: theme.spacing(2)
},
selectIcon: {
position: "relative"
}
}))
...
<Select
labelId="demo-simple-select-label"
id="demo-simple-select-adornment"
value={age}
onChange={handleChange}
classes={{
icon: classes.selectIcon //overriding the select-icon style
}}
endAdornment={
<InputAdornment position="end">
<HelpOutline />
</InputAdornment>
}
>
<MenuItem value={10}>Ten</MenuItem>
<MenuItem value={20}>Twenty</MenuItem>
<MenuItem value={30}>Thirty</MenuItem>
</Select>