【JS】1705- 重学 JavaScript API - Fullscreen API

news2024/12/23 5:33:35

a6747adc31f24b969c394cf8f45e4a2f.jpeg

前期回顾:

1. Page Visibility API

2. Broadcast Channel API

3. Beacon API

4. Resize Observer API

5. Clipboard API

6. Fetch API

7. Performance API

8. WebStorage API

9. WebSockets API

本文中,我们将探索 Fullscreen API 的概念、使用方法、实际应用、兼容性和优缺点,并提供一些建议和注意事项。让我们一起深入了解吧!

🔍 1. 什么是 Fullscreen API

1.1 概念介绍

Fullscreen API 是一组用于控制网页全屏显示的 JavaScript 方法和属性。它允许开发者通过 JavaScript 代码将网页中的特定元素或整个文档切换到全屏模式,以便更好地利用屏幕空间。 通过 Fullscreen API,开发者可以通过按键、鼠标点击或触摸手势等方式触发全屏切换,并在全屏状态下进行自定义的交互和操作。

1.2 作用和使用场景

Fullscreen API 的作用在于提供更好的用户体验和交互方式。它可以在特定场景中增强网页的功能性,例如:

  • 视频播放器:在观看视频时,通过将视频元素全屏显示,可以提供更沉浸式的观影体验。

  • 游戏应用:在游戏应用中,全屏模式可以消除干扰,使玩家能够专注于游戏内容。

  • 演示文稿:通过将演示文稿全屏显示,可以确保观众集中注意力,展示出更好的视觉效果。

  • 图片浏览器:在浏览图片时,将图片全屏显示可以提供更大的展示区域,使用户能够更好地欣赏图片细节。

Fullscren API 的使用场景丰富多样,可以根据具体需求来应用。

💻 2. 如何使用 Fullscreen API

Fullscreen API 提供了一组方法和属性,用于实现全屏显示和控制。下面是一些常用的方法和属性:

  • document.documentElement.requestFullscreen(): 这个方法将整个文档切换到全屏模式。

  • element.requestFullscreen(): 这个方法将指定的元素切换到全屏模式。

  • document.exitFullscreen(): 这个方法用于退出全屏模式。

  • document.fullscreenElement: 这个属性返回当前处于全屏状态的元素,如果没有元素处于全屏状态,则返回 null。

  • document.fullscreenEnabled: 这个属性表示当前环境是否支持 Fullscreen API。

下面是一个简单的使用示例,用于将文档切换到全屏模式:

const button = document.querySelector("button");
button.addEventListener("click", () => {
  document.documentElement.requestFullscreen();
});

在这个例子中,我们获取了一个按钮元素,当按钮被点击时,我们调用 requestFullscreen() 方法,将整个文档切换到全屏模式。当用户想要退出全屏模式时,可以按 Esc 键或调用 exitFullscreen() 方法。

🚀 3. 实际应用

Fullscreen API 可以应用于各种不同的场景中。下面是一些实际应用的示例:

  • 视频播放器:通过 Fullscreen API,可以将视频元素切换到全屏模式,提供更好的观影体验。

  • 游戏应用:在游戏应用中,全屏模式可以消除干扰,提供更好的游戏体验。

  • 演示文稿:通过 Fullscreen API,可以将演示文稿全屏显示,确保观众集中注意力,展示出更好的视觉效果。

  • 图片浏览器:在浏览图片时,将图片全屏显示可以提供更大的展示区域,使用户能够更好地欣赏图片细节。

除此之外,Fullscreen API 还可以应用于各种需要全屏显示的场景中。

接下来使用 Fullscreen API 实现图片全屏展示的示例:

<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8" />
    <title>Fullscreen Image Demo</title>
    <style>
      img {
        width: 100%;
        height: 100%;
        object-fit: cover;
      }
    </style>
  </head>
  <body>
    <button id="fullscreen-btn">Fullscreen</button>
    <img src="https://picsum.photos/1200/800" alt="Demo Image" />
    <script>
      const fullscreenBtn = document.querySelector("#fullscreen-btn");
      const image = document.querySelector("img");

      fullscreenBtn.addEventListener("click", () => {
        if (document.fullscreenElement) {
          document.exitFullscreen();
        } else {
          image.requestFullscreen();
        }
      });
    </script>
  </body>
</html>

按照类似实现方式,可以实现视频全屏播放、PPT 全屏播放等效果。

🎯 4. 兼容性和优缺点

4.1 兼容性

以下是 Fullscreen API 的兼容性列表,包含了主流浏览器及其支持的最低版本:

  • Chrome 15+✅

  • Firefox 10+✅

  • Safari 5.1+✅

  • Edge 12+✅

  • Opera 12.1+✅

  • Internet Explorer 11+✅

  • iOS Safari 4.2+✅

829a7d7193e3a22024febe9713f7d345.png

可以在 Can I use[1] 网站上查看 Fullscreen API 的兼容性详情。

4.2 优缺点

使用 Fullscreen API 可以提供更好的用户体验和交互方式,但是也存在一些缺点。下面是一些优缺点的总结: 优点:

  • 提供更好的用户体验和交互方式。

  • 可以在特定场景中增强网页的功能性。

缺点:

  • 兼容性问题,不同浏览器的支持程度不同。

  • 部分用户可能不喜欢全屏模式,可能会选择手动退出全屏。

4.3 工具推荐

以下是几个基于 Fullscreen API 实现的 GitHub 仓库:

  1. fullPage.js[2]:34.6k⭐,一个基于 Fullscreen API 的全屏滚动库,支持多种效果和自定义配置。

  2. screenfull.js[3]:6.8k⭐,一个小巧的 Fullscreen API 库,支持多种浏览器和设备。

  3. BigVideo.js[4]:2.3k⭐,一个基于 Fullscreen API 的视频背景库,支持多种视频格式和配置选项。

✨ 5. 使用建议和注意事项

在使用 Fullscreen API 时,以下是一些建议和注意事项:

  • 请确保提供合适的用户控制方式,让用户可以自由切换全屏模式和退出全屏模式。

  • 在切换到全屏模式时,注意调整页面布局和样式,以适应全屏显示。

  • 注意处理兼容性问题,提供备选方案或回退策略,以便在不支持 Fullscreen API 的浏览器中提供良好的用户体验。

🔚 6. 总结

本文介绍了 Fullscreen API,它是一种用于控制浏览器全屏显示的 JavaScript API。通过 Fullscreen API,开发者可以提供更好的用户体验和交互方式。

📚 7. 拓展阅读

  • Fullscreen API[5]: Mozilla Developer Network 对 Fullscreen API 的详细文档。

  • Using the Fullscreen API in web browsers[6]: SitePoint 的文章,介绍如何在网页中使用 Fullscreen API。

  • HTML Fullscreen API Specification[7]: Fullscreen API 的规范文档,提供了更深入的技术细节。

Reference

[1]

Can I use: https://caniuse.com/?search=Fullscreen

[2]

fullPage.js: https://github.com/alvarotrigo/fullPage.js

[3]

screenfull.js: https://github.com/sindresorhus/screenfull.js

[4]

BigVideo.js: https://github.com/dfcb/BigVideo.js

[5]

Fullscreen API: https://developer.mozilla.org/en-US/docs/Web/API/Fullscreen_API

[6]

Using the Fullscreen API in web browsers: https://www.sitepoint.com/use-html5-full-screen-api/

[7]

HTML Fullscreen API Specification: https://fullscreen.spec.whatwg.org/

往期回顾

#

如何使用 TypeScript 开发 React 函数式组件?

#

11 个需要避免的 React 错误用法

#

6 个 Vue3 开发必备的 VSCode 插件

#

3 款非常实用的 Node.js 版本管理工具

#

6 个你必须明白 Vue3 的 ref 和 reactive 问题

#

6 个意想不到的 JavaScript 问题

#

试着换个角度理解低代码平台设计的本质

d9f11e6128b014a50a9beba8c1555289.gif

回复“加群”,一起学习进步

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/618473.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

SpringBoot+Vue 的简历招聘系统

文章目录 1、效果演示2、 前言介绍3、主要技术4 **系统设计**4.1 系统体系结构4.2开发流程设计4.3 数据库设计原则4.4 数据表 5 **系统详细设计**5.1管理员功能模块5.2用户功能模块5.3前台首页功能模块 6、源码获取 1、效果演示 2、 前言介绍 随着科学技术的飞速发展&#xff…

加速5G部署,到底该怎么做?

今天&#xff0c;第31届中国国际信息通信展&#xff08;PT展&#xff09;在北京国家会议中心圆满落幕。 这次通信展&#xff0c;在举办日期上有着特殊的意义。因为&#xff0c;今年的6月6日&#xff0c;正好是国内5G牌照正式发放的四周年纪念日。而且&#xff0c;去年大概这个时…

DETR模型转RKNN

目录 1.前言 2.准备工作 3.开始转模型 4.测试代码 5.不想转&#xff0c;直接用也可以&#xff0c;转好的给你&#xff0c;请关注评论一下 1.前言 RKNN出最新版本了&#xff0c;测试了一下&#xff0c;rk在transformer方面做了很多的工作&#xff0c;至少之前不能转的模型&am…

ReadProcessMemory可不是一个进程间通信的好方法

有时候我看到有人会使用 ReadProcessMemory 这个 API 来实现进程间通信&#xff0c;老实说吧&#xff0c;我觉得这不是一个明智的选择&#xff0c;原因有如下几条。 首先&#xff0c;你不能使用 ReadProcessMemory 来跨越安全上下文 (Security Contexts)&#xff0c;至少你需要…

SpringCloud入门实战(八)- Gateway服务网关集成

&#x1f4dd; 学技术、更要掌握学习的方法&#xff0c;一起学习&#xff0c;让进步发生 &#x1f469;&#x1f3fb; 作者&#xff1a;一只IT攻城狮 &#xff0c;关注我&#xff0c;不迷路 。 &#x1f490;学习建议&#xff1a;1、养成习惯&#xff0c;学习java的任何一个技术…

macOS Sonoma 14.0 (23A5257q) Beta1 带 OC 引导双分区黑苹果镜像

6月6日&#xff0c;在WWDC2023开发者大会上&#xff0c;苹果带来了全新Mac系统&#xff0c;命名为macOS Sonoma。该系统最大的亮点是带来了小组件&#xff0c;macOS Sonoma可以添加手机上的所有小组件&#xff0c;包括车辆小组件。 镜像下载&#xff1a; 微信公众号&#xff1…

聚观早报 | 苹果发XR头显Vision Pro;英特尔将出售部分Mobileye股票

今日要闻&#xff1a;苹果发XR头显Vision Pro&#xff1b;英特尔将出售部分Mobileye股票&#xff1b;华为已申请注册两枚NETGPT&#xff1b;瑞幸咖啡全国门店数量突破1万家&#xff1b;iPhone15系列本月将在郑州富士康量产 苹果发XR头显Vision Pro 6 月 6 日&#xff0c;苹果 …

从零手写操作系统之RVOS环境搭建-01

从零手写操作系统之RVOS环境搭建-01 背景介绍操作系统的定义操作系统的分类典型的 RTOS 介绍课程系统RVOS简介 Hello WorldQEMU介绍QEMU-virt 地址映射 系统引导引导程序要做哪些事情如何判断当前hart是不是第一个hart?如何初始化栈? 如何在屏幕输出Hello World通过串口输出U…

基于java SpringBoot框架和Vue的智能停车场管理系统

近年来&#xff0c;中国不仅综合国力大幅提升&#xff0c;国民经济也快速增长&#xff0c;推动了中国汽车工业的发展。技术的飞速发展逐渐降低了汽车的制造成本&#xff0c;越来越受欢迎。今天&#xff0c;大多数家庭都有能力购买汽车&#xff0c;因此&#xff0c;中国城市的汽…

R语言手动绘制连续线条的校准曲线(Calibration curve)(4)

校准曲线图表示的是预测值和实际值的差距&#xff0c;作为预测模型的重要部分&#xff0c;目前很多函数能绘制校准曲线。 一般分为两种&#xff0c;一种是通过Hosmer-Lemeshow检验&#xff0c;把P值分为10等分&#xff0c;求出每等分的预测值和实际值的差距。 我们既往已经通…

基于组件化开发思想的微信小程序开发框架

跨端框架的出现为小程序应用的开发带来了巨大的便利性和灵活性。它们提供了统一的开发方式、代码复用的能力&#xff0c;并且与小程序容器技术紧密结合&#xff0c;实现了一次编码、多端运行的目标。开发者可以根据项目需求和团队技术栈选择合适的跨端框架&#xff0c;从而在不…

【大数据工具】Spark 伪分布式、分布式集群搭建

Spark 集群搭建 Spark 安装包下载地址&#xff1a;https://archive.apache.org/dist/spark/ 1. Spark 伪分布式安装 安装前提&#xff1a;安装 Spark 前需要先安装好 JDK 1. 上传并解压 Spark 安装包 使用 fileZilla 或其他文件传输工具上传 Spark 安装包&#xff1a;spar…

简单易懂的 nvm 和 Node.js 版本控制指南

NVM是Node.js的版本管理工具&#xff0c;可以方便地在不同版本的Node.js之间切换。它可以通过命令行或者脚本来管理Node.js的版本&#xff0c;支持在同一台机器上安装多个版本的Node.js&#xff0c;并能够方便地切换它们。 NVM的主要功能包括&#xff1a; 安装和卸载Node.js的不…

2022年国赛高教杯数学建模A题波浪能最大输出功率设计解题全过程文档及程序

2022年国赛高教杯数学建模 A题 波浪能最大输出功率设计 原题再现 随着经济和社会的发展&#xff0c;人类面临能源需求和环境污染的双重挑战&#xff0c;发展可再生能源产业已成为世界各国的共识。波浪能作为一种重要的海洋可再生能源&#xff0c;分布广泛&#xff0c;储量丰富…

DevExpress WinForms v23.1新功能抢先看——支持系统强调色更改

DevExpress WinForm 下一个主要版本&#xff08;v23.1&#xff09;将在6月份左右发布&#xff0c;本文将为大家介绍在早期访问预览版&#xff08;EAP&#xff09;中包含的新功能。 PS&#xff1a;DevExpress WinForm拥有180组件和UI库&#xff0c;能为Windows Forms平台创建具…

5月琐碎但值得的事情

转眼间时间就来到了6月份&#xff0c;又该写5月的思考总结了&#xff0c;依然记录一些5月份发生的小事或者收获&#xff0c; 这些内容本意给我记录生活的&#xff0c;如果对你有一些帮助就更好了。 往期&#xff1a; 1月的碎碎念&#xff0c;但是很有必要 二月的一些琐事&#…

chatgpt赋能python:Python如何阻止弹窗

Python如何阻止弹窗 Python是一种高级编程语言&#xff0c;它具有广泛的应用和丰富的库。它还可以被用于开发自动化程序&#xff0c;包括阻止弹窗。在本文中&#xff0c;我们将介绍如何使用Python阻止弹出窗口&#xff0c;并探讨防止弹窗的原因。 为什么要防止弹窗&#xff1…

Librosa库——语音识别,语音音色识别训练及应用

很多同学以为语音识别是非常难的&#xff0c;其实并不然&#xff0c;起初我也是这么认为&#xff0c;但后来发现语音识别是最简单的&#xff0c;因为同学们可能不知道Python有一个音频处理库Librosa&#xff0c;这个库非常的强大&#xff0c;可以进行音频处理、频谱表示、幅度转…

精彩回顾 | 来看 QTF 量化科技嘉年华上的 DolphinDB

6月2日至6月3日&#xff0c;2023“量变质变”量化科技嘉年华在上海世博中心圆满举办。 DolphinDB 作为联合主办方&#xff0c;在6月3日上午的“因子挖掘与机器学习”分论坛中&#xff0c;为广大量化粉丝们奉上了一场干货满满的主题分享与圆桌讨论&#xff0c;现场座无虚席&…

直击CACLP:新冠红利退潮,谁在裸泳,谁在冲刺?

5月可谓是很多医疗人马不停蹄的一个月&#xff0c;上海的第87届CMEF刚结束&#xff0c;28至30日&#xff0c;体外诊断&#xff08;IVD&#xff09;旗帜性行业盛会——第20届CACLP也在南昌绿地国际博览中心顺利落幕了。 纷享销客已经连续五年参与这两大行业盛会了&#xff0c;…