全屏展示内容覆盖问题

273 阅读1分钟

在项目中,我们经常需要全屏展示某些元素,通常会直接调用 requestFullscreen 将指定元素全屏展示。然而,这种方法存在一些问题。例如,全屏后的元素会创建 top layer,拥有更高的层级,这使得提示消息和弹窗等内容无法显示,因为它们的 z-index 无法超越 top layer

解决方案

为了应对这一问题,我们可以考虑以下几种解决方案:

方案一:将消息提示内容插入到全屏元素中

将提示消息等内容直接插入到全屏元素中,而不是放在 body。这样可以确保这些内容在全屏状态下依然可见。

方案二:使用创建 top layer 的元素重新封装消息提示组件

例如,可以使用 dialog 元素重新封装消息提示组件。dialog 元素能够创建 top layer,从而保证提示消息能够在全屏状态下显示。

方案三:将整个 body 全屏

将整个 body 进行全屏,然后通过样式将需要全屏的元素覆盖整个页面,模拟全屏效果。

方案对比

方案一和方案二虽然可行,但改造成本较大,且方案二的兼容性较差,因此都不太合适。相比之下,方案三改造成本小,操作简单,现有组件无需做额外修改,只需通过样式调整即可实现全屏效果。