WEB全屏API简介及示例

简介: FullScreen API允许页面上的一个元素有一个全屏视图,通常情况下,会在不同的图形或媒体资源(例如视频或图像)中看到这一点,但实际上可以让页面上的任何元素都具有全屏视图。

FullScreen API允许页面上的一个元素有一个全屏视图,通常情况下,会在不同的图形或媒体资源(例如视频或图像)中看到这一点,但实际上可以让页面上的任何元素都具有全屏视图。

FullScreen API 目前在 Chrome、Firefox、Opera 和 Edge 中得到很好的支持。

如果需要对 FullScreen API 的跨平台支持,可以使用第三方脚本库 fscreenscreenfull

要在用户的浏览器上启用全屏视图,首先需要使用 Element.requestFullScreen 函数请求获取许可。这与请求访问位置数据不同,浏览器基本上是通过判断用户是否执行了一个特定的操作来批准或拒绝全屏访问,比如单击一个允许按钮来确定请求是否被接受。

如果用户想要退出全屏视图,可以使用通用退出全屏窗口的方式,以及按下退出键。

全屏section

FullScreen API最常用于放大图像和视频,但它们都有自己的小问题需要考虑,所以将从一些更简单的内容开始:一个带有按钮的HTML5页面,将页面部分内容转换为全屏视图。

<div class="container">
    <h1>FullScreen API演示</h1>
    <p>
        FullScreen
        API允许页面上的一个元素有一个全屏视图,通常情况下,会在不同的图形或媒体资源(例如视频或图像)中看到这一点,但实际上可以让页面上的任何元素都具有全屏视图。
    </p>
    <section class="fullscreen-enabled">
        <h2 class="fullscreen-intro">
            一个带有按钮的HTML5页面,将页面部分内容转换为全屏视图。
        </h2>
        <h3 class="fullscreen-more">全屏模式下才会显示的内容</h3>
        <div class="bottom-right">
            <button aria-label="点击切换全屏方式" class="button button-blue">
                全屏方式
            </button>
        </div>
    </section>
</div>
<script type="text/javascript">
    const toggleFullScreen = (el) => {
        if (!document.fullscreenElement) {
            el.requestFullscreen();
            return;
        }
        document.exitFullscreen();
    };
    const button = document.querySelector("button");
    button.addEventListener("click", () => {
        toggleFullScreen(document.querySelector(".fullscreen-enabled"));
    });
</script>

实际效果可以点击查看DEMO

全屏modal

模态弹窗图层是现代前端主要的弹窗方式,下面来定义一个全屏模态弹窗,主要代码如下:

<div class="container">
    <h1>FullScreen API演示</h1>
    <p>
        FullScreen
        API允许页面上的一个元素有一个全屏视图,通常情况下,会在不同的图形或媒体资源(例如视频或图像)中看到这一点,但实际上可以让页面上的任何元素都具有全屏视图。
    </p>
    <button
        aria-label="点击打开全屏modal"
        class="button fullscreener button-blue"
    >
        全屏 Modal
    </button>
</div>
<section
    role="dialog"
    aria-modal="true"
    aria-labelledby="modalLabel"
    class="fullscreen-enabled fullscreen-modal"
>
    <div class="modal-content">
        <h2 id="modalLabel" class="fullscreen-more">
            全屏模式下才会显示的内容
        </h2>
        <span
            role="button"
            tabindex="0"
            aria-label="Close the modal"
            class="fullscreener close"
        ></span>
        <div class="modalBody">
            <p>
                要在用户的浏览器上启用全屏视图,首先需要使用
                Element.requestFullScreen
                函数请求获取许可。这与请求访问位置数据不同,浏览器基本上是通过判断用户是否执行了一个特定的操作来批准或拒绝全屏访问,比如单击一个允许按钮来确定请求是否被接受。
            </p>
        </div>
    </div>
</section>
<script type="text/javascript">
    const toggleFullScreen = (el) => {
        if (!document.fullscreenElement) {
            el.requestFullscreen();
            return;
        }
        document.exitFullscreen();
    };
    const buttons = document.querySelectorAll(".fullscreener");
    const fullScreenEnabledEl = document.querySelector(".fullscreen-enabled");
    buttons.forEach((button) => {
        button.addEventListener("click", () => {
            toggleFullScreen(fullScreenEnabledEl);
        });
        button.addEventListener("keydown", (e) => {
            if (e.key === "Enter") {
                toggleFullScreen(fullScreenEnabledEl);
            }
        });
    });
</script>

实际效果可以点击查看DEMO

总结

Fullscreen API 使用起来非常简单,可以为前端带来很多意向不到的效果,除了文章介绍的两种简单使用,还可以用于全屏图片查看。


相关文章
|
1月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
26 0
|
1月前
|
安全 数据库 开发者
Python Web框架简介
【2月更文挑战第10天】Python Web框架简介。
90 2
|
14天前
|
云安全 数据采集 安全
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
阿里云提供两种关键安全产品:Web应用防火墙和云防火墙。Web应用防火墙专注网站安全,防护Web攻击、CC攻击和Bot防御,具备流量管理、大数据防御能力和简易部署。云防火墙是SaaS化的网络边界防护,管理南北向和东西向流量,提供访问控制、入侵防御和流量可视化。两者结合可实现全面的网络和应用安全。
阿里云安全产品,Web应用防火墙与云防火墙产品各自作用简介
|
14天前
|
JSON 监控 API
在API接口对接中关键示例问题(1)
在API接口对接中,有几个关键的问题需要注意,以确保接口的稳定性、安全性和易用性。以下是这些问题及部分示例代码的简要概述
|
1月前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务
|
1月前
|
Java API PHP
获取1688商品详情API:步骤与代码示例
在电子商务领域,阿里巴巴的1688平台是一个广受商家和开发者欢迎的批发交易市场。若您是一名开发者,希望建立自己的应用程序或网站来获取并展示1688上的商品信息,您可能需要使用到1688提供的API接口。以下是获取1688商品详情API的详细步骤说明。
|
1月前
|
缓存 监控 API
Python Web框架FastAPI——一个比Flask和Tornada更高性能的API框架
Python Web框架FastAPI——一个比Flask和Tornada更高性能的API框架
58 0
|
1月前
|
分布式计算 API 数据处理
Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
【2月更文挑战第15天】Flink【基础知识 01】(简介+核心架构+分层API+集群架构+应用场景+特点优势)(一篇即可大概了解flink)
60 1
|
1月前
|
JSON API 数据格式
构建高效Python Web应用:Flask框架与RESTful API设计实践
【2月更文挑战第17天】在现代Web开发中,轻量级框架与RESTful API设计成为了提升应用性能和可维护性的关键。本文将深入探讨如何使用Python的Flask框架来构建高效的Web服务,并通过具体实例分析RESTful API的设计原则及其实现过程。我们将从基本的应用架构出发,逐步介绍如何利用Flask的灵活性进行模块化开发,并结合请求处理、数据验证以及安全性考虑,打造出一个既符合标准又易于扩展的Web应用。
647 4
|
1月前
|
Java API
Java 日期和时间 API:实用技巧与示例 - 轻松处理日期和时间
简介 Scanner 类用于获取用户输入,它位于 java.util 包中。 使用 Scanner 类 要使用 Scanner 类,请执行以下步骤: 导入 java.util.Scanner 包。 创建一个 Scanner 对象,并将其初始化为 System.in。 使用 Scanner 对象的方法读取用户输入。
53 1