构建全屏 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)轻松实现更好的全屏体验。


相关文章
|
2天前
|
缓存 数据库连接 数据库
构建高性能的Python Web应用:优化技巧与最佳实践
本文探讨了如何通过优化技巧和最佳实践来构建高性能的Python Web应用。从代码优化到服务器配置,我们将深入研究提高Python Web应用性能的各个方面。通过本文,读者将了解到一系列提高Python Web应用性能的方法,从而更好地应对高并发和大流量的挑战。
|
3天前
|
XML 开发框架 .NET
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
C#/ASP.NET应用程序配置文件app.config/web.config的增、删、改操作
|
6天前
|
数据采集 存储 XML
如何利用Python构建高效的Web爬虫
本文将介绍如何使用Python语言以及相关的库和工具,构建一个高效的Web爬虫。通过深入讨论爬虫的基本原理、常用的爬虫框架以及优化技巧,读者将能够了解如何编写可靠、高效的爬虫程序,实现数据的快速获取和处理。
|
12天前
|
运维 前端开发 JavaScript
【专栏:HTML进阶篇】HTML与Web标准:构建可访问与可维护的网页
【4月更文挑战第30天】本文探讨了HTML与Web标准的关系,强调遵循标准对创建高质量、可访问、可维护网页的重要性。通过使用语义化标签、提供文本替代、合理使用表格和列表,可提升网页可访问性;通过结构化文档、添加注释、分离结构与表现,能增强网页可维护性。遵循Web标准,可确保网页在不同设备上的兼容性,并满足各类用户需求。
|
12天前
|
开发框架 Dart 前端开发
【Flutter前端技术开发专栏】Flutter中的Web支持:构建跨平台Web应用
【4月更文挑战第30天】Flutter,Google的开源跨平台框架,已延伸至Web领域,让开发者能用同一代码库构建移动和Web应用。Flutter Web通过将Dart代码编译成JavaScript和WASM运行在Web上。尽管性能可能不及原生Web应用,但适合交互性强、UI复杂的应用。开发者应关注性能优化、兼容性测试,并利用Flutter的声明式UI、热重载等优势。随着其发展,Flutter Web为跨平台开发带来更多潜力。
【Flutter前端技术开发专栏】Flutter中的Web支持:构建跨平台Web应用
|
12天前
|
缓存 监控 测试技术
【Go语言专栏】使用Go语言构建高性能Web服务
【4月更文挑战第30天】本文探讨了使用Go语言构建高性能Web服务的策略,包括Go语言在并发处理和内存管理上的优势、基本原则(如保持简单、缓存和并发控制)、标准库与第三方框架的选择、编写高效的HTTP处理器、数据库优化以及性能测试和监控。通过遵循最佳实践,开发者可以充分利用Go语言的特性,构建出高性能的Web服务。
|
13天前
|
网络协议 数据库 开发者
构建高效Python Web应用:异步编程与Tornado框架
【4月更文挑战第29天】在Web开发领域,响应时间和并发处理能力是衡量应用性能的关键指标。Python作为一种广泛使用的编程语言,其异步编程特性为创建高性能Web服务提供了可能。本文将深入探讨Python中的异步编程概念,并介绍Tornado框架如何利用这一机制来提升Web应用的性能。通过实例分析,我们将了解如何在实际应用中实现高效的请求处理和I/O操作,以及如何优化数据库查询,以支持更高的并发用户数和更快的响应时间。
|
13天前
|
开发者 Python
使用Python构建Web应用的简介
【4月更文挑战第28天】
|
13天前
|
缓存 前端开发 JavaScript
|
13天前
|
前端开发 JavaScript 开发工具
前端技术栈:构建现代Web应用的基石与实践
前端技术栈:构建现代Web应用的基石与实践
23 3