• JavaScript 触发浏览器页面全屏,某div区域全屏


    在这里插入图片描述

    JavaScript Fullscreen API:全屏操作

    全屏API可以控制浏览器的全屏显示,让一个Element节点(以及子节点)占满用户的整个屏幕。目前各大浏览器的最新版本都支持这个API(包括IE11),但是使用的时候需要加上浏览器前缀。

    方法

    requestFullscreen()

    Element节点的requestFullscreen方法,可以使得这个节点全屏。

    function launchFullscreen(element) {
      if(element.requestFullscreen) {
        element.requestFullscreen();
      } else if(element.mozRequestFullScreen) {
        element.mozRequestFullScreen();
      } else if(element.msRequestFullscreen){
        element.msRequestFullscreen();
      } else if(element.webkitRequestFullscreen) {
        element.webkitRequestFullScreen();
      }
    }
    
    launchFullscreen(document.documentElement);
    launchFullscreen(document.getElementById("videoElement"));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    放大一个节点时,Firefox和Chrome在行为上略有不同。Firefox自动为该节点增加一条CSS规则,将该元素放大至全屏状态,width: 100%; height: 100%,而Chrome则是将该节点放在屏幕的中央,保持原来大小,其他部分变黑。为了让Chrome的行为与Firefox保持一致,可以自定义一条CSS规则。

    :-webkit-full-screen #myvideo {
      width: 100%;
      height: 100%;
    }
    
    • 1
    • 2
    • 3
    • 4

    exitFullscreen()

    document对象的exitFullscreen方法用于取消全屏。该方法也带有浏览器前缀。

    function exitFullscreen() {
      if (document.exitFullscreen) {
        document.exitFullscreen();
      } else if (document.msExitFullscreen) {
        document.msExitFullscreen();
      } else if (document.mozCancelFullScreen) {
        document.mozCancelFullScreen();
      } else if (document.webkitExitFullscreen) {
        document.webkitExitFullscreen();
      }
    }
    
    exitFullscreen();
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    用户手动按下ESC键或F11键,也可以退出全屏键。此外,加载新的页面,或者切换tab,或者从浏览器转向其他应用(按下Alt-Tab),也会导致退出全屏状态。

    属性

    document.fullscreenElement

    fullscreenElement属性返回正处于全屏状态的Element节点,如果当前没有节点处于全屏状态,则返回null。

    var fullscreenElement =
      document.fullscreenElement ||
      document.mozFullScreenElement ||
      document.webkitFullscreenElement;
    
    • 1
    • 2
    • 3
    • 4

    document.fullscreenEnabled

    fullscreenEnabled属性返回一个布尔值,表示当前文档是否可以切换到全屏状态。

    var fullscreenEnabled =
      document.fullscreenEnabled ||
      document.mozFullScreenEnabled ||
      document.webkitFullscreenEnabled ||
      document.msFullscreenEnabled;
    
    if (fullscreenEnabled) {
      videoElement.requestFullScreen();
    } else {
      console.log('浏览器当前不能全屏');
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    全屏事件

    以下事件与全屏操作有关。

    • fullscreenchange事件:浏览器进入或离开全屏时触发。

    • fullscreenerror事件:浏览器无法进入全屏时触发,可能是技术原因,也可能是用户拒绝。

    document.addEventListener("fullscreenchange", function( event ) {
      if (document.fullscreenElement) {
        console.log('进入全屏');
      } else {
        console.log('退出全屏');
      }
    });
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    上面代码在发生fullscreenchange事件时,通过fullscreenElement属性判断,到底是进入全屏还是退出全屏。

    全屏状态的CSS

    全屏状态下,大多数浏览器的CSS支持:full-screen伪类,只有IE11支持:fullscreen伪类。使用这个伪类,可以对全屏状态设置单独的CSS属性。

    :-webkit-full-screen {
      /* properties */
    }
    
    :-moz-full-screen {
      /* properties */
    }
    
    :-ms-fullscreen {
      /* properties */
    }
    
    :full-screen { /*pre-spec */
      /* properties */
    }
    
    :fullscreen { /* spec */
      /* properties */
    }
    
    /* deeper elements */
    :-webkit-full-screen video {
      width: 100%;
      height: 100%;
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
  • 相关阅读:
    【2 操作系统的结构】
    Python学习基础笔记六十五——布尔值
    利用面向对象方法,处理数据文件【Python】
    C++ list详解以及模拟实现
    element-ui在项目当中的引入以及按需引入使用
    flutter 状态栏 AppBar 设置透明和半透明
    CNN 理解神经网络中卷积(大小,通道数,深度)
    new/delete 和malloc/free的区别
    普通人做自媒体视频剪辑有出路吗?
    3.SpringEL方法调用实例
  • 原文地址:https://blog.csdn.net/zqd_java/article/details/126386293