跳到主内容

AntDesign的Select组件弹窗会跟随滚动条滚动

· 1分钟阅读

使用 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 组件的父元素,类似的组件还有 PopoverPopconfirmDropdownTimePickerDatePicker 等组件,都可以通过 getPopupContainer 来配置