如何设置MUI Select下拉菜单从输入字段下方展开
MUI Select下拉菜单强制从输入框下方展开的解决方案
问题
点击MUI Select组件的下拉菜单时,弹出框默认显示在输入字段上方,需要将其设置为从输入字段下方展开,让下拉菜单从目标区域底部开始显示。
解决方法
通过配置Select组件的MenuProps属性,强制指定菜单的锚点和变换原点,即可实现从下方展开的效果:
修改后的代码示例
import React from 'react'; import Box from '@mui/material/Box'; import FormControl from '@mui/material/FormControl'; import InputLabel from '@mui/material/InputLabel'; import Select from '@mui/material/Select'; import MenuItem from '@mui/material/MenuItem'; export default function BasicSelect() { const [age, setAge] = React.useState(''); const handleChange = (event) => { setAge(event.target.value); }; return ( <Box sx={{ minWidth: 120, mt:10 }}> <FormControl fullWidth> <InputLabel id="demo-simple-select-label">Age</InputLabel> <Select labelId="demo-simple-select-label" id="demo-simple-select" value={age} label="Age" onChange={handleChange} // 关键配置:强制菜单从下方展开 MenuProps={{ anchorOrigin: { vertical: 'bottom', horizontal: 'center', }, transformOrigin: { vertical: 'top', horizontal: 'center', }, }} > <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> <MenuItem value={10}>Ten</MenuItem> <MenuItem value={20}>Twenty</MenuItem> <MenuItem value={30}>Thirty</MenuItem> </Select> </FormControl> </Box> ); }
配置说明
anchorOrigin.vertical: 'bottom':将菜单的锚点设置在Select组件的底部transformOrigin.vertical: 'top':将菜单自身的顶部与锚点对齐,这样菜单就会从Select组件的下方开始展开- 同时设置
horizontal: 'center'保证菜单水平方向与输入框居中对齐,保持视觉一致性
内容的提问来源于stack exchange,提问作者user12302978
相关产品推荐
相关产品推荐

