`
CshBBrain
  • 浏览: 650307 次
  • 性别: Icon_minigender_1
  • 来自: 成都
博客专栏
B7d9bf34-126e-301f-819e-81f2615b5a2a
开源WebSocket服务...
浏览量:144945
Group-logo
HTML5移动开发
浏览量:137891
社区版块
存档分类
最新评论

HTML5 全屏 API

阅读更多

注:提 HTML5 只是说明他是一项新的东西,至于浏览器的 JavaScript API 应不应是 HTML5 的一个配套?我们不纠结。不如看这个接口能给我带来什么,思考可以如何给网页做个体验上的增强应用吧。

一、说在前面的

其实只是一个新的 JavaScript API,让 HTML 元素可以实现全屏显示。不过,这已经足够让我们兴奋。具体是怎样呢?其实这个从 iOS 和 Safari 5.0 就已经可以用在 <video> 上。看一下这个,在 iPhone 上访问 youku 上的一个视频:

html5 fullscreen

 

我们可以点击中间这个大大的放映按钮,这里 iOS 里的 safari 会把影片全屏显示,使用的就是这个接口。只不过是 Safari 自己实现的接口。依然不是 W3C 标准。如下图:

html5 fullscreen

 二、FullScreen JavaScript API 具体使用

1、JavaScript API

FullScreen Javascript API 目前仍是草案,实现这个 API,更确切来说是具有这项功能的浏览器有:Chrome 15 / Firefox Nightly / Safari 5.1。对于 JS API 的前端调用,我们可以先看看下面的代码:

// Webkit (works in Safari5.1 and Chrome 15) element.webkitRequestFullScreen(); document.webkitCancelFullScreen();   // Firefox (works in nightly) element.mozRequestFullScreen(); document.mozCancelFullScreen();   // W3C 提议 element.requestFullscreen(); document.exitFullscreen(); 

只有两个方法,在需要调用全屏的元素调用 requestFullscreen() 方法,在需要退出时对 document 调用 exitFullscreen() 这个 API。问题不大,只是命名上的不同。

只是,厂商前缀,各浏览器的实现和 W3C 不一致,代码又得写得跟屎一样。我特意把不同用颜色标注出来。绿色的是相同的点,红色的是不同的点。在这一点上倒觉得 W3C 有点奇怪。好不容易 Webkit 和 Mozilla 是一致的,何必改掉命名。既然发,为什么不把 request 发成 enter 与 exit 对应?!。无论如何,至少可以实现,目前 IE 仍没有决定要不要实现这个草案,Johndyer 这样说:“I have an email from a IE team member saying they are discussing it, but have not made any decisions. ” 。呃~

在这里吐槽也没什么用,我们返回正题。浏览器支持 fullscreenchange 事件。让你可以为全屏做更多事。官方草案没有多提,只是略过,这一段来自 Johndyer 的代码,使用的是 Mozilla 的提案,具体使用还需要具体对待:

// Webkit-base: element.onwebkitfullscreenchange // Firefox: element.onmozfullscreenchange  // W3C Method: element.addEventListener('fullscreenchange', function(e) {     if (document.fullScreen) {        /* make it look good for fullscreen */     } else {        /* return to the normal state in page */     } }, true);

2. CSS 选择器::fullscreen / :fullscreen-ancestor

这两个选择器的作用是这样的:

  • :fullscreen – 当前全屏化的元素
  • :fullscreen-ancestor – 所有全屏化元素的祖先元素

对于 :fullscreen 还是比较好理解的,但对于 fullscreen-ancestor 要选出它的全家,而不仅仅是父节点,似乎不能理解其他使用。其实,看一下官方草案提供的 Demo 代码,就知道了:可以隐藏或者什么的。但为什么不把全屏的内容设置为最高级别置顶的元素呢?这一点 W3C 的选择似乎也比较另令想吐槽。看官方 CSS Demo 代码吧:

:fullscreen {   position:fixed;   top:0;   left:0;   right:0;   bottom:0;   z-index:2147483647;   background:black;   width:100%;   height:100%; } /* If there is a fullscreen element that is not the root then    we should hide the viewport scrollbar. */ :fullscreen-ancestor:root {   overflow:hidden; } :fullscreen-ancestor {   /* Ancestors of a fullscreen element should not induce stacking contexts      that would prevent the fullscreen element from being on top. */   z-index:auto;   /* Ancestors of a fullscreen element should not be partially transparent,      since that would apply to the fullscreen element and make the page visible      behind it. It would also create a pseudo-stacking-context that would let content      draw on top of the fullscreen element. */   opacity:1;   /* Ancestors of a fullscreen element should not apply SVG masking, clipping, or      filtering, since that would affect the fullscreen element and create a pseudo-      stacking context. */   mask:none;   clip:none;   filter:none;   transform:none; } 

 3. HTML 标签属性: allowFullScreen

像 flash 使用的 <object> 和 <embed> 可以设置是否允许全屏,现在这个特性同样可以应用于 <iframe> 标签。只要添加 allowFullScreen 属性即可:

<!-- content from another site that is allowed to use the fullscreen command --> <iframe width="640" height="360" src="http://anothersite.com/video/123" allowfullscreen=""></iframe>

三、解决方案

一般来说,全屏主要应用还是在视频和游戏。当然,也可以实现像 Mac Lion 一样的全屏显示,就像 Preview.app,全屏的时候使用起来是非常爽的。游戏和视频可以使用 flash 来兼容旧的浏览器和不支持 fullScreen JavaScript API 的浏览器。像 Firefox Nightly( v10 会支持),Chrome 15, Safari 5.1 可以使用 Johndyer 的 jQuery 插件:https://gist.github.com/1354468

四、总结

目前遇到的问题可能是:

  1. IE 对这个功能的实现没有安排
  2. 全屏在 Mac 下是浏览器全屏还是内置实现的全屏?Chrome 实现的是 Lion 内置的全屏,而 Safari 本身实现的是浏览器自身的全屏。
  3. 安全问题,全屏下伪造一个系统登陆框?
  4. 是否所有元素都应该被全屏内容盖住?

似乎第 1 点和第 3 点是我们比较关注的,也需要去关注的。反而对于 API 的调用是比较简单的,不需要那么多思考。

引用 DEMO: Fullscreen JavaScript API

五、引用文档

1. 参考事件的处理:Let Your Content Do the Talking: Fullscreen API 
2. 大部分代码引用这篇文章:Native Fullscreen JavaScript API (plus jQuery plugin) 
3. 历史和讨论:Fullscreen HTML5 video 
4. 标准与厂商对比:W3C Draft: Fullscreen

分享到:
评论

相关推荐

    html5 全屏源码

    HTML5引入了全屏API,允许开发者通过JavaScript控制元素或整个文档进入全屏模式。主要涉及到两个API方法:`requestFullScreen()` 和 `exitFullscreen()`。 - `requestFullScreen()`: 这个方法用于使元素进入全屏...

    用html5 js实现点击一个按钮达到浏览器全屏效果

    HTML5全屏API允许网页或应用在不使用传统全屏快捷键F11的情况下,实现全屏效果。开发者可以通过编写JavaScript代码,利用HTML5的全屏API来控制浏览器的全屏显示和退出全屏模式。 以下是实现点击按钮触发浏览器全屏...

    全屏js插件

    全屏API是HTML5引入的一个功能,允许开发者控制元素进入或退出全屏模式。在JavaScript中,主要使用`element.requestFullScreen()`方法使一个元素进入全屏模式,而`document.exitFullScreen()`方法则用于退出全屏。...

    HTML5全屏(Fullscreen)API详细介绍

    HTML5全屏API是一个允许开发者控制网页元素(包括整个网页)全屏显示的JavaScript接口。全屏API通过提供一种标准方式,使得网页可以要求全屏显示,同时也可以让开发者退出全屏模式。它最初由W3C的Web应用工作小组...

    HTML5全屏图文左右滑动切换特效

    首先,HTML5在这个特效中的作用主要体现在结构化元素和新的API上。例如,`&lt;section&gt;`标签可以用来组织页面内容,每个滑动面板都可以视为一个独立的`&lt;section&gt;`。`&lt;article&gt;`标签则用于封装每块图文信息,确保内容的...

    html5全屏马里奥

    为了实现全屏效果,开发者可能使用了CSS3的全屏API,例如`requestFullscreen()`方法,使整个游戏界面占据浏览器的全部屏幕空间,提升玩家的沉浸感。同时,CSS3还提供了过渡、动画、阴影等效果,可以增强游戏的视觉...

    HTML5全屏幻灯片切换特效.zip

    HTML5是超文本标记语言的第五个版本,提供了许多新的元素和API,使得开发者可以构建更丰富、更动态的网页内容。在全屏幻灯片切换中,HTML5的`&lt;canvas&gt;`元素和`&lt;video&gt;`元素等可以用来显示高分辨率的图像和视频,而新...

    HTML5全屏图文左右滑动切换特效.zip

    首先,HTML5是超文本标记语言的最新版本,它引入了许多新的元素和API,旨在提高网页的语义性、可访问性和互动性。全屏图文切换特效利用了HTML5的这些特性,如`&lt;section&gt;`、`&lt;article&gt;`等元素来结构化内容,以及`...

    全屏html5模板

    全屏HTML5模板是利用这些特性构建的,旨在为用户提供沉浸式的浏览体验,常用于网站设计、个人作品集、产品展示等领域。 在"全屏html5模板"中,我们主要可以关注以下几个知识点: 1. **响应式设计**:HTML5的响应式...

    HTML5中5个简单实用的API(第二篇,含全屏、可见性、拍照、预加载、电池状态)

    HTML5全屏API允许开发者通过编程方式使浏览器窗口切换到全屏模式,并且可以请求用户的允许。这是一个非常强大的功能,尤其是在需要全屏展示游戏或视频时非常有用。全屏API的使用方法包括检查浏览器是否支持此特性,...

    html5全屏响应式打开窗口遮罩动画特效.zip

    5. **全屏打开窗口**:全屏模式通常由JavaScript实现,可以利用浏览器提供的全屏API,例如`element.requestFullscreen()`方法。全屏模式下,遮罩动画能带来更加沉浸式的用户体验。 6. **遮罩层**:遮罩层是一个半...

    html5全屏滚动响应式设计师个人主页模板

    HTML5是超文本标记语言的最新版本,引入了许多新的元素和API,比如`&lt;header&gt;`、`&lt;nav&gt;`、`&lt;section&gt;`、`&lt;article&gt;`、`&lt;footer&gt;`等语义化标签,使得网页结构更加清晰;`&lt;canvas&gt;`元素提供了在浏览器中进行动态图形...

    jQuery和html5全屏响应式文章水平横向布局

    【jQuery和HTML5全屏响应式文章水平横向布局】是一种现代网页设计技术,结合了HTML5的新特性与jQuery的强大功能,以实现一个适应各种屏幕尺寸的网页布局。在这个设计中,文章以水平方式呈现,用户可以通过导航在不同...

    HTML5全屏图片左右滑动轮播代码.zip

    HTML5引入了许多新的元素和API,使得构建复杂的网页布局和交互变得更加简单。例如,`&lt;figure&gt;`和`&lt;figcaption&gt;`元素可以用来组织图片和相关的描述文本,而`&lt;div&gt;`和`&lt;nav&gt;`元素则可以用于构建轮播框架和导航按钮。 ...

    html5全屏物流信息大数据展示界面模板

    HTML5全屏物流信息大数据展示界面模板是一种前端技术实现的可视化解决方案,专为物流行业的数据监控和分析设计。这个模板利用HTML5的先进特性和强大的数据处理能力,为用户提供了一个实时、直观的数据展示平台,方便...

    HTML5全屏大图幻灯片切换特效.zip

    HTML5的新特性,如`&lt;canvas&gt;`元素和离线存储API,为创建复杂的网页交互提供了更多的可能性。在这个特效中,虽然可能并未直接使用`&lt;canvas&gt;`,但HTML5的`&lt;img&gt;`元素和`&lt;div&gt;`等结构元素被用来构建幻灯片的基本框架,...

    jQueryHTML5超炫全屏焦点图

    而HTML5则引入了许多新的API和元素,增强了网页的互动性和多媒体支持。 1. **jQuery简介**:jQuery是由John Resig在2006年创建的,它的核心理念是“Write Less, Do More”。jQuery提供了一种简洁的语法来处理DOM...

    HTML5全屏图册

    HTML5作为新一代的超文本标记语言,提供了丰富的API和元素,使得开发者可以创建出动态、交互性更强的网页应用,而全屏图册就是这些特性的具体应用之一。 全屏图册的设计主要依赖以下几个HTML5的关键技术: 1. `...

    手机端PC端视频播放

    1. HTML5全屏API:`&lt;video&gt;`元素提供了requestFullscreen方法,允许视频进入全屏模式。在退出时,可使用document.exitFullscreen方法。 2. 适应性全屏:根据设备特性,如手机的横屏模式,自动切换到全屏播放,提升...

Global site tag (gtag.js) - Google Analytics