使用 Antd 的 Select 组件,在点击弹出下拉选项时,会跟随滚动条滚动,用户体验不好。经过一个上午的搜索,发现了一个解决方案,使用 getPopupContainer
属性
<div style={{ padding: 100, height: 1000, background: "#eee", position: "relative" }} id="area">
<h4>可滚动的区域 / scrollable area</h4>
<Select defaultValue="lucy" style={{ width: 120 }} getPopupContainer={() => document.getElementById("area")}>
<Option value="jack">Jack</Option>
<Option value="lucy">Lucy</Option>
<Option value="yiminghe">yiminghe</Option>
</Select>
</div>
这是因为 Select 组件弹出的选项默认渲染到 body 上,如果你遇到菜单滚动定位问题,试试修改为滚动的区域,并相对其定位。上面配置的 getPopupContainer
对应的元素为 Select 组件的父元素,类似的组件还有 Popover
, Popconfirm
,Dropdown
,TimePicker
,DatePicker
等组件,都可以通过 getPopupContainer
来配置