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实现多功能下拉菜单(带分享按)的教程
Nov 05 HTML / CSS
纯css3实现走马灯效果
Dec 26 HTML / CSS
基于html和CSS3制作酷炫的导航栏
Sep 23 HTML / CSS
CSS3实现伪类hover离开时平滑过渡效果示例
Aug 10 HTML / CSS
HTML5 贪吃蛇游戏实现思路及源代码
Sep 03 HTML / CSS
详解基于canvas的视频遮罩插件
Jan 04 HTML / CSS
canvas绘制视频封面的方法
Feb 05 HTML / CSS
Html+Css+Jquery实现左侧滑动拉伸导航菜单栏的示例代码
Mar 17 HTML / CSS
HTML5给汉字加拼音收起展开组件的实现代码
Apr 08 HTML / CSS
萌新HTML5 入门指南(二)
Nov 09 HTML / CSS
详解CSS伪元素的妙用单标签之美
May 25 HTML / CSS
在CSS中使用when/else的方法
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
WordPress过滤垃圾评论的几种主要方法小结
2016/07/11 PHP
Yii框架where查询用法实例分析
2019/10/22 PHP
用 javascript 实现的点击复制代码
2007/03/24 Javascript
jQuery 前的按键判断代码
2010/03/19 Javascript
通过判断JavaScript的版本实现执行不同的代码
2010/05/11 Javascript
转换json格式的日期为Javascript对象的函数
2010/07/13 Javascript
jQuery :nth-child前有无空格的区别分析
2011/07/11 Javascript
Javascript基础教程之变量
2015/01/18 Javascript
全面解析Javascript无限添加QQ好友原理
2016/06/15 Javascript
PHP捕捉异常中断的方法
2016/10/24 Javascript
VueJs单页应用实现微信网页授权及微信分享功能示例
2017/07/26 Javascript
JS中定位 position 的使用实例代码
2017/08/06 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
Angular使用操作事件指令ng-click传多个参数示例
2018/03/27 Javascript
使用post方法实现json往返传输数据的方法
2019/03/30 Javascript
javascript canvas检测小球碰撞
2020/04/17 Javascript
JavaScript事件循环及宏任务微任务原理解析
2020/09/02 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
Python中使用第三方库xlrd来写入Excel文件示例
2015/04/05 Python
Python实现将SQLite中的数据直接输出为CVS的方法示例
2017/07/13 Python
分享给Python新手们的几道简单练习题
2017/09/21 Python
Scrapy框架CrawlSpiders的介绍以及使用详解
2017/11/29 Python
Django之模型层多表操作的实现
2019/01/08 Python
Python常用扩展插件使用教程解析
2020/11/02 Python
css3 2D图片转动样式可以扩充到Js当中
2014/04/29 HTML / CSS
Anthropologie英国:美国家喻户晓的休闲服装和家居产品品牌
2018/12/05 全球购物
Sport-Thieme荷兰:购买体育用品
2019/08/25 全球购物
亿阳信通股份有限公司笔试题(C#)
2016/03/04 面试题
百度软件工程师职位
2013/02/14 面试题
财务管理个人自荐书范文
2013/11/24 职场文书
房屋租赁协议书范本
2014/04/10 职场文书
我的小天地教学反思
2014/04/30 职场文书
大学英语专业求职信
2014/06/21 职场文书
教书育人演讲稿
2014/09/11 职场文书
2014年计划生育工作总结
2014/11/14 职场文书
微信小程序结合ThinkPHP5授权登陆后获取手机号
2021/11/23 PHP