Safari中的普通元素被JS控制全屏,FullScreen API允许页面上的一个元素有一个全屏视图

﹏ヽ暗。殇╰゛Y 2023-10-08 21:21 83阅读 0赞

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

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

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

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

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

全屏section

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

  1. <div class="container">
  2. <h1>FullScreen API演示</h1>
  3. <p>
  4. FullScreen
  5. API允许页面上的一个元素有一个全屏视图,通常情况下,会在不同的图形或媒体资源(例如视频或图像)中看到这一点,但实际上可以让页面上的任何元素都具有全屏视图。
  6. </p>
  7. <section class="fullscreen-enabled">
  8. <h2 class="fullscreen-intro">
  9. 一个带有按钮的HTML5页面,将页面部分内容转换为全屏视图。
  10. </h2>
  11. <h3 class="fullscreen-more">全屏模式下才会显示的内容</h3>
  12. <div class="bottom-right">
  13. <button aria-label="点击切换全屏方式" class="button button-blue">
  14. 全屏方式
  15. </button>
  16. </div>
  17. </section>
  18. </div>
  19. <script type="text/javascript">
  20. const toggleFullScreen = (el) => {
  21. if (!document.fullscreenElement) {
  22. el.requestFullscreen();
  23. return;
  24. }
  25. document.exitFullscreen();
  26. };
  27. const button = document.querySelector("button");
  28. button.addEventListener("click", () => {
  29. toggleFullScreen(document.querySelector(".fullscreen-enabled"));
  30. });
  31. </script>

实际效果可以点击查看DEMO。

DEMO效果普通效果:bbb0fbd2a0a041a0aa585b471784fe93.png

点击全屏方式后:整个桌面都会是这样的效果

5d1e7258f2954a3bb80b896584f796a0.png

全屏modal

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

  1. <div class="container">
  2. <h1>FullScreen API演示</h1>
  3. <p>
  4. FullScreen
  5. API允许页面上的一个元素有一个全屏视图,通常情况下,会在不同的图形或媒体资源(例如视频或图像)中看到这一点,但实际上可以让页面上的任何元素都具有全屏视图。
  6. </p>
  7. <button
  8. aria-label="点击打开全屏modal"
  9. class="button fullscreener button-blue"
  10. >
  11. 全屏 Modal
  12. </button>
  13. </div>
  14. <section
  15. role="dialog"
  16. aria-modal="true"
  17. aria-labelledby="modalLabel"
  18. class="fullscreen-enabled fullscreen-modal"
  19. >
  20. <div class="modal-content">
  21. <h2 id="modalLabel" class="fullscreen-more">
  22. 全屏模式下才会显示的内容
  23. </h2>
  24. <span
  25. role="button"
  26. tabindex="0"
  27. aria-label="Close the modal"
  28. class="fullscreener close"
  29. ></span>
  30. <div class="modalBody">
  31. <p>
  32. 要在用户的浏览器上启用全屏视图,首先需要使用
  33. Element.requestFullScreen
  34. 函数请求获取许可。这与请求访问位置数据不同,浏览器基本上是通过判断用户是否执行了一个特定的操作来批准或拒绝全屏访问,比如单击一个允许按钮来确定请求是否被接受。
  35. </p>
  36. </div>
  37. </div>
  38. </section>
  39. <script type="text/javascript">
  40. const toggleFullScreen = (el) => {
  41. if (!document.fullscreenElement) {
  42. el.requestFullscreen();
  43. return;
  44. }
  45. document.exitFullscreen();
  46. };
  47. const buttons = document.querySelectorAll(".fullscreener");
  48. const fullScreenEnabledEl = document.querySelector(".fullscreen-enabled");
  49. buttons.forEach((button) => {
  50. button.addEventListener("click", () => {
  51. toggleFullScreen(fullScreenEnabledEl);
  52. });
  53. button.addEventListener("keydown", (e) => {
  54. if (e.key === "Enter") {
  55. toggleFullScreen(fullScreenEnabledEl);
  56. }
  57. });
  58. });
  59. </script>

总结

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

发表评论

表情:
评论列表 (有 0 条评论,83人围观)

还没有评论,来说两句吧...

相关阅读