构建全屏 Web 应用程序

简介: 全屏 UI 设计有助于通过消除干扰来保持用户与内容的专注互动。因此,可以看到在现代 Web 应用程序中越来越多地使用全屏 UI,这都得益于浏览器的发展。在过去Web 应用要支持丝滑全屏还是有一定的复杂度,如借助 Flash 等等。在本文中,通过一个简单的全屏功能来展示 JavaScript 全屏 API 功能的使用。

全屏 UI 设计有助于通过消除干扰来保持用户与内容的专注互动。因此,可以看到在现代 Web 应用程序中越来越多地使用全屏 UI,这都得益于浏览器的发展。在过去Web 应用要支持丝滑全屏还是有一定的复杂度,如借助 Flash 等等。在本文中,通过一个简单的全屏功能来展示 JavaScript 全屏 API 功能的使用。

什么是全屏 API?

全屏 API 提供了将全屏集成到 DOM 元素及其子元素的方法,开发人员可以使用此功能向最终用户轻松的实现全屏。

如日常生活中腾讯视频、优酷视频等视频网站、地图或WEB游戏等等,全屏模式可提供更好的用户体验。

注意:浏览器对全屏 API 的支持因 Safari 不完全支持此功能而异。但是可以通过使用判断浏览器来兼容解决这个问题。

全屏 API 示例

使用全屏 API 非常简单,它有一系列现成的全局方法。下面就以创建一个简单应用程序来演示全屏 API 的功能。可以在这里 multifile-uploader项目中找到完整的代码。

requestFullscreen

全屏 API 提供了一个名为 requestFullscreen() 的方法来从浏览器请求全屏视图,将返回一个 promise ,该 promise 将在激活全屏模式后完成。

增加全屏按钮,并绑定一个 click 事件。

let elemBtnFullscreen = document.querySelector(".fullscreen-button");
elemBtnFullscreen.addEventListener("click", () => {
    document.documentElement.requestFullscreen();
});

也能为页面上某一个元素使用 requestFullscreen() 函数,如对按钮使用全屏,如下:

const elemBtnFullscreen2 = document.querySelector(".fullscreen-upload-button");
elemBtnFullscreen2.addEventListener("click", () => {
    document.querySelector(".upload-btn").requestFullscreen();
});

退出全屏

退出全屏很简单,因为用户可以使用 Esc 键或任何其它常规方法。但是,如果想使用自定义按钮来实现它,则可以使用 exitFullscreen() 方法。这是一种文档范围的方法,它将当前元素从全屏模式切换回窗口模式。

const elemBtnExitscreen = document.querySelector(".exit-button");
elemBtnExitscreen.addEventListener("click", () => {
    document.exitFullscreen();
});

全屏切换

有时,与使用多个按钮相比,可能更喜欢使用单个切换按钮来启用和禁用全屏模式。但是,全屏 API 没有提供任何直接的方法来在窗口视图和全屏视图之间切换。

但是,可以使用现有的方法和属性轻松实现全屏切换功能。

在这个例子中,将使用以下属性来检查浏览器是否支持全屏视图或者应用程序是否已经处于全屏模式。

  • document.fullscreenEnabled :检查浏览器是否支持全屏并被用户允许。
  • document.fullscreenElement :将返回全屏视图中的当前元素, 如果我们不在全屏模式下返回 null

toggleFullscreen() 函数的代码如下:

const toggleFullscreen = () => {
    if (document.fullscreenEnabled) {
        if (document.fullscreenElement) {
            document.exitFullscreen();
        } else {
            document.documentElement.requestFullscreen();
        }
    } else {
        alert("Fullscreen is not supported!");
    }
};
const elemBtnFullscreen = document.querySelector(".fullscreen-button");
elemBtnFullscreen.addEventListener("click", () => {
    toggleFullscreen();
});
document.addEventListener("keydown", (e) => {
    if (e.key === "Enter") {
        toggleFullscreen();
    }
});

全屏样式

可以使用 CSS 伪类为全屏元素添加特定 :fullscreen 样式,然后,当用户请求全屏视图时,样式将应用于 UI,更详细的介绍可以参阅《WEB 全屏 API 简介及示例

结论

渲染媒体元素时通常使用全屏视图,但是继续前进,接下来,可以使用全屏 API 将任何元素带入全屏视图体验。

全屏 API 提供了一大堆可以使用的特性,但是,在实际Web 应用中需要考虑浏览器的兼容性。如果不想自己处理兼容性问题,可以使用第三方脚本库(如 react-fullscreenscreenfull.jsfscreen)轻松实现更好的全屏体验。


相关文章
|
10月前
|
前端开发 JavaScript 开发者
JavaScript:构建动态Web的核心力量
JavaScript:构建动态Web的核心力量
|
10月前
|
弹性计算 监控 网络安全
如何轻松使用AWS Web应用程序防火墙?
AWS WAF是Web应用防火墙,可防护常见网络攻击。通过创建Web ACL并设置规则,保护CloudFront、API网关、负载均衡器等资源。支持自定义规则与OWASP预定义规则集,结合CloudWatch实现监控日志,提升应用安全性和稳定性。
|
前端开发 算法 API
构建高性能图像处理Web应用:Next.js与TailwindCSS实践
本文分享了构建在线图像黑白转换工具的技术实践,涵盖技术栈选择、架构设计与性能优化。项目采用Next.js提供优秀的SSR性能和SEO支持,TailwindCSS加速UI开发,WebAssembly实现高性能图像处理算法。通过渐进式处理、WebWorker隔离及内存管理等策略,解决大图像处理性能瓶颈,并确保跨浏览器兼容性和移动设备优化。实际应用案例展示了其即时处理、高质量输出和客户端隐私保护等特点。未来计划引入WebGPU加速、AI增强等功能,进一步提升用户体验。此技术栈为Web图像处理应用提供了高效可行的解决方案。
|
安全 JavaScript 前端开发
AppSpider 7.5.020 发布 - Web 应用程序安全测试
AppSpider 7.5.020 for Windows - Web 应用程序安全测试
259 0
|
10月前
|
存储 安全 Java
如何在 Spring Web 应用程序中使用 @SessionScope 和 @RequestScope
Spring框架中的`@SessionScope`和`@RequestScope`注解用于管理Web应用中的状态。`@SessionScope`绑定HTTP会话生命周期,适用于用户特定数据,如购物车;`@RequestScope`限定于单个请求,适合无状态、线程安全的操作,如日志记录。合理选择作用域能提升应用性能与可维护性。
402 1
|
开发框架 JSON 中间件
Go语言Web开发框架实践:使用 Gin 快速构建 Web 服务
Gin 是一个高效、轻量级的 Go 语言 Web 框架,支持中间件机制,非常适合开发 RESTful API。本文从安装到进阶技巧全面解析 Gin 的使用:快速入门示例(Hello Gin)、定义 RESTful 用户服务(增删改查接口实现),以及推荐实践如参数校验、中间件和路由分组等。通过对比标准库 `net/http`,Gin 提供更简洁灵活的开发体验。此外,还推荐了 GORM、Viper、Zap 等配合使用的工具库,助力高效开发。
|
安全 测试技术 Linux
Acunetix v25.4 发布 - Web 应用程序安全测试
Acunetix v25.4 (Linux, Windows) - Web 应用程序安全测试
457 3
Acunetix v25.4 发布 - Web 应用程序安全测试
|
安全 Devops 测试技术
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
260 0
AppSpider 7.5.018 for Windows - Web 应用程序安全测试
|
数据可视化 图形学 UED
从模型托管到交互开发:DataV 如何简化三维 Web 应用构建?
从模型托管到交互开发:DataV 如何简化三维 Web 应用构建?
382 2
|
自然语言处理 安全 测试技术
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试
1027 0
HCL AppScan Standard 10.8.0 (Windows) - Web 应用程序安全测试

热门文章

最新文章