HTML5 全屏特性

全屏功能是浏览器很早就支持的一项功能了,可以让你页面中的video, image ,div 等等子元素实现全屏浏览,从而带来更好的视觉体验,来看看怎么使用吧。先来看看有哪些API和事件支持。

API


// 元素请求全屏显示
element.requestFullscreen()

// 检测文档的当前状态是否允许执行全屏操作
document.fullscreenEnabled()

//当前显示的元素是否处于全屏状态,如果处于,则返回为非空对象,否则返回null
document.fullscreenElement()

//元素退出全屏显示
document.exitFullscreen()

上面除了RequestFullscreen()是支持element 对象以外,其他3个都只是支持document.

Event

fullscreenchange   // 全屏状态更改时触发

fullscreenerror  //  执行全屏错误时触发

由于每个浏览器实现的方式不一样,所以我们实际的调用中还不能直接这样写,需要针对不同的浏览器做支持检测,下面跟着详细的例子看下具体兼容代码。

html

<body>
<img id="imgFS" src=""/>
<a id="btnFS" href="javascript:;"> FullScreen </a>
</body>

javascript

var fullScreen = document.getElementById(‘btnFS‘);
fullScreen.addEventListener("click", function(){

    var status = document.fullscreenEnabled ||
        document.webkitFullscreenEnabled ||
        document.mozFullscreenEnabled ||
        document.msFullscrrenEnabled;
        if (status) {
            var img = document.getElementById("imgFS");
            if (img.requestFullscreen) {
                img.requestFullscreen();
            } else if (img.msRequestFullscreen) { // IE
                img.msRequestFUllscreen();
            } else if (img.mozRequestFullscreen) { // Firefox (Gecko)
                img.mozRequestFullscreen();
            } else if (img.webkitRequestFullscreen) { // Webkit
                img.webkitRequestFullscreen();
            }
        } else {
            alert("The document not allowed to fullscreen.");
        }
});

以上代码针对一个图片元素进行了全屏操作的例子,上文中的全屏触发是通过监听一个按钮来实现的,这个地方需要注意的是,假如你想在页面载入后就触发全屏,这个事件是不会触发执行全屏显示的。只有通过例如click, keydown等触发事件,才可以启用全屏显示的功能。

监听键盘按钮触发

下面的代码示例通过按键F12来触发启用或者关闭的操作,主要是利用了element.fullscreenElement 方法来判断当前的文档状态,来进行切换的,具体代码如下:

document.addEventListener("keydown", function(e){
    console.log(e.keyCode);
    if (e.keyCode == 123) { // keypress fn + F12 for Mac
        fullscreen();
    }
});

function fullscreen() {
    var body = document.body;
    var status = !document.fullscreenElement &&  // get the screen status
        !document.msFullscreenElement &&
        !document.mozFullscreenElement &&
        !document.webkitFullscreenElement;

    if (status) {
        if (body.requestFullscreen) {
            body.requestFullscreen();
        } else if (body.mozRequestFullscreen) {
            body.mozRequestFullscreen();
        } else if (body.webkitRequestFullscreen) {
            body.webkitRequestFullscreen();
        } else if (body.msRequestFullscreen) {
            body.msRequestFUllscreen();
        }
    } else {
        if (document.exitFullscreen) {
            document.exitFullscreen();
        } else if (document.mozExitFullscreen) {
            document.mozExitFullscreen();
        } else if (document.webkitExitFullscreen) {
            document.webkitExitFullscreen();
        } else if (document.msExitFullscreen) {
            document.msExitFullscreen();
        }
    }
}

全屏样式

全屏效果下,可以启用针对该状态下的特定样式,从而达到更好的浏览效果。样式定义如下:

:-webkit-full-screen { // Webkit
}

:-moz-full-screen {  // Gecko
}

:-ms-fullscreen { // IE
}

:fullscreen {
}

// 调用示例

#elementID :fullscreen {
    width:100%;
    height:100%;
}

:fullscreen::backdrop {  // 背光
}

// 全屏背光,这是一个新的样式属性,但是目前浏览器支持的的都不太好, 在IE11中被支持,另外下面提到的Opera12.1,使用了:fullscreen-ancestor, 调用方法如下

:-ms-fullscreen::-ms-backdrop {
    background-color: #000;
}

在这个地方需要注意的是,Gecko和Webkit在全屏状态下显示是有差异的,Gecko会默认把指定的全屏元素进行width:100%;height:100%,而Webkit则是显示一片黑色,所以这个地方就需要针对全屏的元素进行样式调整了,参考以上代码示例。

浏览器兼容情况

参考地址:Caniuse

另外上面有说道下面几个问题,可以注意下。

  • IE11全屏状态下是不允许滚动的
  • IE11 并不允许通过keydown or pointerdown事件来触发msRequestFullscreen()keypress 和click没有问题
  • IE11对iframe中使用全屏支持的并不是很好
  • 在全屏模式中Safari阻塞了keyboard事件(出于安全考虑),但是我上面代码中,在Yosmite中,通过监听F12,Safari是可以正常工作的
  • Opera 12.1 使用老的标准:fullscreen-ancestor 伪类替代了 ::backdrop伪元素

总结

总之全屏是一个非常棒的特性,它可以让我们的Web拥有像原生应用一样体验,在以后的项目中会多尝试下这个特性。

本文参考

Using fullscreen mode

Fullscreen API Living Standard

How to Use the HTML5 Full-Screen API (Again)

时间: 2024-10-10 14:02:14

HTML5 全屏特性的相关文章

HTML5全屏浏览器兼容方案

最近一个项目有页面全屏的的需求,搜索了下有HTML5的全屏API可用,不过各浏览器的支持不一样. 标准 webkit  Firefox  IE Element.requestFullscreen() webkitRequestFullscreen mozRequestFullScreen msRequestFullscreen Document.exitFullscreen() webkitExitFullscreen mozCancelFullScreen msExitFullscreen D

HTML5全屏背景视频与 CSS 和 JS(插件或库)

译文原链接:http://codetheory.in/html5-fullscreen-background-video/ 前言: 当网页载入时,自动播放的全屏背景视频已经成为当前颇受欢迎的趋势. 就个人而言,我认为自动播放.质量好的视频会增加用户/客户的参与度.应该记住,视频的故事必须与品牌相关. 近年来,我们被FB和Twitter等社交网络上的大量视频所包围. 据研究由此引起了用户更多的参与. 最近我不得不在一个网站上实现相同的功能,因此我决定构建一个用到 HTML5 视频元素并且易于使用的

How to Use HTML5 FUll Screen API(怎样使用HTML5全屏接口)

原文链接:http://www.sitepoint.com/use-html5-full-screen-api/ 假设你不太喜欢变化太快的东西,那么web开发可能不适合你. 我曾在2012年末有写过Full-Screen API的介绍,而且当时就提到事实上现细节可能会被改动,可是没有想到一年后我须要重写!本篇的所讲的内容或许不是最新的.可是很感谢David Storey帮我重点归纳出最近技术方面的变化.... 什么是Full-Screen API? 此API能够使单个元素全屏显示. 与按下F11

一款基于jQuery和HTML5全屏焦点图

今天爱编程小编给大家分享一款非常绚丽的jQuery焦点图插件,同时这款焦点图也利用了HTML5和CSS3的相关特性,使图片切换效果更加丰富多彩.另外,这款jQuery焦点图插件的特点是全屏的效果,因此看上去也非常的大气和整体.效果图如下: 在线预览   源码下载 实现的代码. html代码: <div id="wrapper"> <div class="fullwidthbanner-container"> <div class=&qu

How to Use HTML5 FUll Screen API(如何使用HTML5全屏接口)

原文链接:http://www.sitepoint.com/use-html5-full-screen-api/ 如果你不太喜欢变化太快的东西,那么web开发可能不适合你.我曾在2012年末有写过Full-Screen API的介绍,并且当时就提到其实现细节可能会被修改,但是没有想到一年后我需要重写!本篇的所讲的内容也许不是最新的,但是非常感谢David Storey帮我重点归纳出近期技术方面的变化.... 什么是Full-Screen API? 此API可以使单个元素全屏显示.与按下F11键强

html5 全屏滚动活动页学习

先看几个具体的实例: 1.腾讯娱乐:http://ent.qq.com/zt2014/qqent/h5.htm?from=groupmessage&isappinstalled=0 2.苏宁互联 :http://image.suning.cn/images/game/hlwx/index.html?from=timeline&isappinstalled=0#rd3.qq音乐:http://y.qq.com/m/act/year10/04.html?ADTAG=weixin&fro

HTML5 全屏化操作功能

由于项目中用到了全屏化挫折功能,查看了API后写了一个简单的全屏化model <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title></title> <style type="text/css"> .div1{ width: 1000px;height: 500px; border: solid 1px blue;

利用 chrome 做本地HTML5全屏应用

现在HTML5已经很强大了,如何让网页看起来像本地应用呢?仅chrome浏览器就可以实现.(但当然只能使用HTML的功能,不能操作本地系统) 以百度为例: 使用chrome打开百度 https://www.baidu.com/ 打开chrome 菜单>更多工具>创建应用快捷方式 将在桌面创建一个打开网站的快捷方式,打开快捷方式,则浏览器无地址栏,看起来像个应用了. 但还有标题栏,如何全屏运行呢?在应用的快捷方式后面添加参数 --kiosk,就可全屏. 当然如果你压根都没有网站或不需要联网,则可

html5——全屏显示

基本概念 1.HTML5规范允许用户自定义网页上任一元素全屏显示 2.requestFullscreen() 开启全屏显示.cancleFullscreen() 关闭全屏显示 3.不同浏览器兼容性不一样 4.全屏伪类div:-ms-fullscreen,表示在全屏后的状态 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title&g