专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > HTML5

HTML5 全屏特征

发布时间:2010-05-20 14:01:29 文章来源:www.iduyao.cn 采编人员:星星草
HTML5 全屏特性

本文作者:Ziv 博客地址:http://imziv.com 

全屏功能是浏览器很早就支持的一项功能了,可以让你页面中的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)

友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

  • 使用HBuilder编辑器将html五页面打包成APP

    使用HBuilder编辑器将html5页面打包成APP   使用HBuilder编辑器将html5页面打包成APP (ios+安卓) 1.首先先安装HBuilder编...

  • 基于phonegap,html5,ratchet,handlebars等技术的微神情APP

    基于phonegap,html5,ratchet,handlebars等技术的微表情APP 该app是由很多有意思的微表情构成的,支持40种表情,并且每种表情都有不同的...

  • HTML5 Web 客户端五种离线储存方式汇总

    HTML5 Web 客户端五种离线存储方式汇总 最近折腾HTML5游戏需要离线存储功能,便把目前可用的几种HTML5存储方式研究了下,基于H...

  • SPICE-HTML5 鼠标指针BUG修补

    SPICE-HTML5 鼠标指针BUG修复 研究SPICE,找到了他们官方指定的HTML5客户端。 下载下来用一下,发现跟网页VNC的水平差不多了。 http:...

  • HTML5+JS 《五子飞》游戏实现(5)移动棋子

    HTML5+JS 《五子飞》游戏实现(五)移动棋子 上一章 我们知道了怎么处理两个重要的吃棋动作,想要吃对方的棋子,首先得移动自己的棋子。...

  • HTML5中怎么上传Resize后的图片

    HTML5中如何上传Resize后的图片 参考资料: 不依赖form标签,而是自己定义FormData上传数据,文件被编码为一个Blob或File对象: https...

  • (1)HTML5

    (一)HTML5 可以解决什么问题: 可以实现网页的ajax加载,同时又能完成URL的改变而没有网页跳转刷新的迹象,就像是改变了网页的hash(#)一样。...

  • 一款纯html5实现的钟表

    一款纯html5实现的时钟 今天给大家分享一款非常漂亮的纯html5实现的时钟。整个界面都由html5绘制而成。一起看下效果图: 在线预览...

  • 使用 WebSockets 开展 HTML5 视频直播

    使用 WebSockets 进行 HTML5 视频直播 实验环境:Ubuntu。 参考以下两个链接进行实践: http://segmentfault.com/blog/xingrz/119...

  • 查询浏览器是不是支持html5

    查询浏览器是否支持html5 js判断 插入js代码====================================================== <script> wind...

热门推荐: