我正在使用NativeBase中的Popover组件来创建我的popover:
const SettingsButton: React.FC<Props> = () => {
return (
<Popover
trigger={(triggerProps) => {
return (
<Button {...triggerProps} variant={'ghost'}>
<HamburgerIcon size="xl" color="lightText" />
</Button>
);
}}
>
<SettingsPopover />
</Popover>
);
};
(Full应用程序为here,弹出框为here)
我希望弹出框后面的页面是可滚动的,类似于你可以滚动Github页面时,你的设置/配置文件弹出框在右边打开。
目前为止我能想到的最好的办法就是
onOpen={() => {
document.body.style.overflow = 'scroll';
}}
onClose={() => {
document.body.style.overflow = 'hidden';
}}
在我的Popover-Component中,但它增加了第二个滚动条,并在滚动时直接关闭Popover(在移动的版的应用程序中,它不会改变任何东西),这是一个有点糟糕的解决方案,我认为一定有一个更好的方法。
1条答案
按热度按时间6ojccjat1#
我相信popover上的
position: fixed;
可以做你想做的。position: fixed;
使弹出框保持在适当的位置,无论视口在哪里,您可以使用top
,left
或其他CSS配置它的显示位置。固定的
该元素将从正常文档流中删除,并且在页面布局中不会为该元素创建空间。它相对于视口建立的初始包含块定位,除非其祖先之一的transform、perspective或filter属性设置为none以外的值(请参见CSS Transforms Spec),或者will-change属性设置为transform,在这种情况下,祖先的行为与包含块相同。(注意,浏览器与透视图和过滤器不一致,这会导致包含块的形成。)它的最终位置由顶部、右侧、底部和左侧的值确定。
position - MDN