想象一下,我们有一个包含多个页面的应用程序:
主页,博客文章供稿,用户个人资料,设置
所有页面均以全角显示,它们是通用页面。
同时,模态/窗口中需要显示某些内容:
用户喜欢的帖子,“身份验证”面板,聊天,用户的关注者
我们需要使从任何页面打开任何这些面板成为可能。例如,当我们打开包含收藏夹帖子的面板,然后立即打开聊天时,聊天面板应该比收藏夹帖子面板的 z-index 多,而 z-index 结果“喜欢的帖子”面板应该重叠。
但是,当我们关闭聊天面板时,我们应该会看到“收藏夹帖子”面板。
相同的过程应与所有其他面板/窗口以及任何顺序的重叠有关!
实现此目标的最佳解决方案是什么?
当前,我有一个名为LayerManager的组件,该组件直接在我的App组件内部呈现。 LayerManager负责呈现所有绝对/固定位置的元素。 redux状态的一部分保留着有关当前打开的所有面板的信息(包含诸如“ show”,“ zIndex”之类的信息的对象数组)。当我们“推动”(打开)新面板时,将派出负责找出最大zIndex的动作,然后将增量的zIndex附加到新面板上。