绝对定位的侧边栏在打开时获得额外的保证金

Absolutely Positioned Sidebar gets extra margin on open

我正在使用 React 并制作了一个侧边栏,它在屏幕内外动画但绝对位置和更改 css right of div。 Here 是一个用于轻松调整代码的沙箱。

所以当你点击蓝色框时,它应该通过将 right 设置为负值而离开屏幕,而粉红色框应该通过将 right 设置为 0 而出现。如您所见,这不起作用。

但是

如果您删除 popout.tsx 中的整个 useEffect 代码,那么一切都会按预期进行。 useEffect 代码负责根据 isOpen 状态聚焦和模糊侧边栏上的文本输入。

谢谢!

编辑

如果您想查看预期行为,请注释掉文件 popout.tsx 中的整个 useEffect。这是预期的行为,粉红色框出输入焦点粉红色框消失输入模糊。

整个事情的想法是,由于那个或使用键绑定,蓝色框会点击我的文本和粉红色框打开。这两个动作都应该关注里面的文本输入。

一些额外信息

如果你按下 ctl + ~ 还有一个键绑定,粉红色框出现,这就是为什么我必须根据 isOpem 状态而不是单击事件更改焦点。

问题是,您需要使用 position: fixed 而不是 position: absolute