如何在Popover打开时启用后台滚动?(React,React Native,Native-Base)

gab6jxml  于 2023-06-24  发布在  React
关注(0)|答案(1)|浏览(176)

我正在使用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(在移动的版的应用程序中,它不会改变任何东西),这是一个有点糟糕的解决方案,我认为一定有一个更好的方法。

6ojccjat

6ojccjat1#

我相信popover上的position: fixed;可以做你想做的。
position: fixed;使弹出框保持在适当的位置,无论视口在哪里,您可以使用topleft或其他CSS配置它的显示位置。
固定的
该元素将从正常文档流中删除,并且在页面布局中不会为该元素创建空间。它相对于视口建立的初始包含块定位,除非其祖先之一的transform、perspective或filter属性设置为none以外的值(请参见CSS Transforms Spec),或者will-change属性设置为transform,在这种情况下,祖先的行为与包含块相同。(注意,浏览器与透视图和过滤器不一致,这会导致包含块的形成。)它的最终位置由顶部、右侧、底部和左侧的值确定。
position - MDN

相关问题