HTML5全屏(Fullscreen)API详细介绍


Posted in HTML / CSS onApril 24, 2015

在越来越真实的web应用程序中,JavaScript也变得越来越给力.

FullScreen API 是一个新的JavaScript API,简单而又强大. FullScreen 让我们可以通过编程的方式来向用户请求全屏显示,如果交互完成,随时可以退出全屏状态.

在线演示Demo:  Fullscreen API Example

(在此Demo中,可以Launch ,Hide ,以及Dump显示相关属性,可以通过chrome的控制台查看日志信息.)

启动全屏模式

全屏API requestFullscreen方法在一些老的浏览器里面依然使用带前缀形式的方法名,因此可能需要进行检测判断:
(带前缀,意思就是各个浏览器内核不通用.)

复制代码
代码如下:

// 找到支持的方法, 使用需要全屏的 element 调用
function launchFullScreen(element) {
if(element.requestFullscreen) {
element.requestFullscreen();
} else if(element.mozRequestFullScreen) {
element.mozRequestFullScreen();
} else if(element.webkitRequestFullscreen) {
element.webkitRequestFullscreen();
} else if(element.msRequestFullscreen) {
element.msRequestFullscreen();
}
}

// 在支持全屏的浏览器中启动全屏
// 整个页面
launchFullScreen(document.documentElement);
// 某个元素
launchFullScreen(document.getElementById("videoElement"));

将需要全屏显示的DOM元素作为参数,调用此方法即可让window进入全屏状态,有时候可能需要用户同意(浏览器自己和用户交互),假若用户拒绝,则可能出现各种不完全的全屏.

如果用户同意进入全屏,那么工具栏以及其他浏览器组件会隐藏起来,使document框架的宽度和高度横跨整个屏幕.

退出全屏模式

使用 exitFullscreen 方法可以使浏览器退出全屏,返回原先的布局. 该方法在一些老的浏览器上也是支持前缀方法.

复制代码
代码如下:

// 退出 fullscreen
function exitFullscreen() {
if(document.exitFullscreen) {
document.exitFullscreen();
} else if(document.mozExitFullScreen) {
document.mozExitFullScreen();
} else if(document.webkitExitFullscreen) {
document.webkitExitFullscreen();
}
}

// 调用退出全屏方法!
exitFullscreen();


请注意: exitFullscreen 只能通过 document 对象调用 —— 而不是使用普通的 DOM element.

Fullscreen 属性与事件

一个坏消息,到目前为止,全屏事件和方法依然是带前缀的,好消息就是很快主流浏览器就会都支持。

1.document.fullscreenElement:  当前处于全屏状态的元素 element.
2.document.fullscreenEnabled:  标记 fullscreen 当前是否可用.

当进入/退出 全屏模式时,会触发 fullscreenchange 事件:

复制代码
代码如下:

var fullscreenElement =
document.fullscreenEnabled
|| document.mozFullscreenElement
|| document.webkitFullscreenElement;
var fullscreenEnabled =
document.fullscreenEnabled
|| document.mozFullscreenEnabled
|| document.webkitFullscreenEnabled;

在初始化全屏方法时,可以探测需要监听哪一个事件.

Fullscreen CSS

浏览器提供了一些有用的 fullscreen CSS 控制规则:

复制代码
代码如下:

/* html */
:-webkit-full-screen {
/* properties */
}
:-moz-fullscreen {
/* properties */
}

:fullscreen {
/* properties */
}

/* deeper elements */
:-webkit-full-screen video {
width: 100%;
height: 100%;
}

/* styling the backdrop */
::backdrop {
/* properties */
}


在某些情况下,WebKit需要一些特殊处理,所以在处理多媒体时,你可能需要上面的代码。

我认为 Fullscreen API 超级简单,超级有用. 我首次见到这个 API 是在一个名为 MDN's BananaBread demo 的全客户端第一人称射击游戏, 这真是一个使用全屏模式的绝佳案例。

全屏API提供了进入和退出全屏模式的方式,并提供相应的事件来监测全屏状态的改变,所以各方面都连贯起来了.

请记住这个很好的API吧 —— 在未来的某个时刻,它肯定会派上用场!

HTML / CSS 相关文章推荐
css3 旋转按钮 使用CSS3创建一个旋转可变色按钮
Dec 31 HTML / CSS
CSS Grid布局教程之什么是网格布局
Dec 30 HTML / CSS
CSS3实现3D翻书效果
Jun 20 HTML / CSS
解决H5的a标签的download属性下载service上的文件出现跨域问题
Jul 16 HTML / CSS
用HTML5实现手机摇一摇的功能的教程
Oct 30 HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
Apr 24 HTML / CSS
详解使用HTML5 Canvas创建动态粒子网格动画
Dec 14 HTML / CSS
使用HTML5 Geolocation实现一个距离追踪器
Apr 09 HTML / CSS
Canvas实现保存图片到本地的示例代码
Jun 28 HTML / CSS
手把手教你实现一个canvas智绘画板的方法
Mar 04 HTML / CSS
简单实现一个手持弹幕功能+文字抖动特效
Mar 31 HTML / CSS
html粘性页脚的具体使用
Jan 18 HTML / CSS
HTML5 video播放器全屏(fullScreen)方法实例
Apr 24 #HTML / CSS
HTML5 video标签(播放器)学习笔记(二):播放控制
Apr 24 #HTML / CSS
HTML5 video标签(播放器)学习笔记(一):使用入门
Apr 24 #HTML / CSS
HTML5 Video标签的属性、方法和事件汇总介绍
Apr 24 #HTML / CSS
HTML5 Canvas中绘制椭圆的4种方法
Apr 24 #HTML / CSS
HTML5 Convas APIs方法详解
Apr 24 #HTML / CSS
微信浏览器取消缓存的方法
Mar 28 #HTML / CSS
You might like
php ob_flush,flush在ie中缓冲无效的解决方法
2010/05/09 PHP
php获取中文拼音首字母类和函数分享
2014/04/24 PHP
php实现计数器方法小结
2015/01/05 PHP
又拍云异步上传实例教程详解
2016/04/19 PHP
Yii2框架可逆加密简单实现方法
2017/08/25 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
PHP调用其他文件中的类
2018/04/02 PHP
Prototype使用指南之selector.js
2007/01/10 Javascript
经常用到的JavasScript事件的翻译
2007/04/09 Javascript
Javascript !!的作用
2008/12/04 Javascript
神奇的7个jQuery 3D插件整理
2011/01/06 Javascript
表单的焦点顺序tabindex和对应enter键提交
2013/01/04 Javascript
js监听键盘事件示例代码
2013/07/26 Javascript
json数据的列循环示例
2013/09/06 Javascript
jquery 缓存问题的几个解决方法
2013/11/11 Javascript
js形成页面的一种遮罩效果实例代码
2014/01/04 Javascript
详解javascript遍历方式
2015/11/11 Javascript
JavaScript实现九九乘法表的简单实例
2016/06/07 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
Summernote实现图片上传功能的简单方法
2016/07/11 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
2017/01/09 Javascript
浅谈node模块与npm包管理工具
2018/01/03 Javascript
原生JavaScript实现贪吃蛇游戏
2020/11/04 Javascript
决策树的python实现方法
2014/11/18 Python
python删除指定类型(或非指定)的文件实例详解
2015/07/06 Python
浅谈python连续赋值可能引发的错误
2018/11/10 Python
python日期相关操作实例小结
2019/06/24 Python
Django框架模型简单介绍与使用分析
2019/07/18 Python
猎人靴英国官网:Hunter Boots
2017/02/02 全球购物
乐天旅游香港网站:日本饭店预订
2017/11/29 全球购物
实习教师自我鉴定
2013/09/27 职场文书
施工人员岗位职责
2013/12/12 职场文书
企业总经理职责
2014/02/02 职场文书
《我为你骄傲》教学反思
2014/02/20 职场文书
mysql批量新增和存储的方法实例
2021/04/07 MySQL
python必学知识之文件操作(建议收藏)
2021/05/30 Python