媒体的询问取决于智能手机和平板布局调整的方向一致网站。但有时候你被锁定在一个希腊网站特定方向。横向或纵向。此时,是本机格式可以指定保健应用。

APP只显示在一个预设格式—独立于实际设备方向。通过使用HTML5的 Screen Orientation API, 能够在JavaScript定义屏幕方向。

为一个文档定义屏幕方向

通过screen.orientation属性的lock()方法能够调整屏幕方向,其默认值是any,这同意设备依据其物理方向来应用不论什么方向。

值”natural”将在设备的自然方向上显示站点,因设备而异。智能手机通常使用横屏,平板则使用竖屏。

screen.orientation.lock("natural");

上面的演示样例中,为设备设置自然方向。

当然,Screen Orientation API也同意你定义一个独立的方向。其有四个值能够选择,这已经包括了移动设备全部可能的方向。

这四个值各自是: “portrait-primary”, “portrait-secondary”, “landscape-primary”和 “landscape-secondary”。



上图显示了全部四个值的方向: “portrait-primary”, “portrait-secondary”, “landscape-primary”和 “landscape-secondary”。

对于智能手机,值portrait-primary和值natural是一样的。并等同于默认方向。

值portrait-secondary将横屏模式旋转180°。所以设置成设别的自然模式时,站点看起来差点儿时颠倒的。

screen.orientation.lock("portrait-primary");

相同,landscape-secondary和landscape-primary不同之处是前者将屏幕旋转了180°。

你也能够不用secondary和primary,仅适用landscape和portrait作为关键字,这将同意设备在两种方向模(portrait-primaryportrait-secondarylandscape-primarylandscape-secondary)式下显示。

假设想删除定义的方向,能够调用unlock()方法。

screen.orientation.unlock();

仅用于全屏模式

通过screen.orientation定义屏幕的方向有两个要求,第一:lock()方法仅在浏览器已经通过requestFullscreen()切换到全屏模式时起作用;第二:和第一点相关,因为全屏模式须要用户的许可,而不是自己主动切换,这相同适用于Screen Orientation API。

因此,对于点击事件,应该绑定这两种方法。

document.getElementById("button").addEventListener("click", function() {
document.documentElement.requestFullScreen();
screen.orientation.lock("portrait-primary"); }, false);

调用lock()方法之前开启全屏模式是非常重要的。正如上面的样例。结束全屏模式将释放锁定的方向。

假设你在浏览器中打开了一个新文档。比如。当点击一个链接时,定义的方向将随着全屏模式同一时候结束。Screen Orientation API仅对当前文档有效。

读取Orientation

不能总是预先确定方向,有时你仅想知道智能手机和平板的方向。

这样的情况下。能够使用Screen Orientation API读取方向,类型属性值是显示定位的关键字之中的一个。

alert(screen.orientation.type);

使用angle属性还能够显示方向的角度

alert(screen.orientation.angle);

角度为0等同于自然方向。大部分智能手机的自然方向是portrait-primary;90°等同于landscape-primary;180°等同portrait-secondary。270°等同landscape-secondary。不同的设备,angle代表不同的关键字。

为了获取方向值,浏览器须要执行在全屏模式下。

通过change事件改变屏幕方向也是能够的,仅仅须要调用addEventListener()为orientation属性注冊change事件并加入一个函数(作为事件处理程序)。

screen.orientation.addEventListener("change", function(e) {
alert(screen.orientation.type + " " + screen.orientation.angle);
}, false);

每一次屏幕方向的改变都会触发弹框。显示当前的方向关键字和角度。

浏览器支持

Screen Orientation API在Chrome 38+ and Opera 25+不须要私有前缀,但 API仅能在移动设备上起作用。

你能够使用一个if语句推断浏览器是否支持API

if ("orientation" in screen) {

}

Screen Orientation API是非常新的API,API的早期发展阶段使用不同的方法名。

比如:使用lockOrientation()而不是lock(),使用unlockOrientation()而不是unlock(),不应该在Chrome and Opera使用这些旧的方法名。

IE 11+和Firefox 33+也支持Screen Orientation API。但须要相应的私有前缀

screen.msLockOrientation.lock("portrait-primary");
screen.mozLockOrientation.lock("portrait-primary");

在IE 11+和Firefox 33+中,检測方向变化的事件名也不同,你应该使用带相应前缀的orientationchange。而不是change.

当使用Screen Orientation API时。还须要记住一件事:因为要Fullscreen API一起使用才干起作用,所以不应该使用它来设计站点之类的。

对于须要全屏模式的浏览器游戏或其它应用程序,它能有更好的效果。

译文出处:http://www.ido321.com/1572.html

本文依据@Denis Potschien的《HTML5: Screen Orientation API Uses Javascript to Rotate the Screen》所译。整个译文带有我自己的理解与思想,假设译得不好或有不正确之处还请同行朋友指点。如需转载此译文,需注明英文出处:http://www.noupe.com/design/html5-screen-orientation-api-uses-javascript-to-rotate-the-screen-89639.html

HTML5: Screen Orientation API的更多相关文章

  1. 屏幕方向读取与锁定:Screen Orientation API(转)

    什么是 Screen Orientation API Screen Orientation API 为 Web 应用提供了读取设备当前屏幕方向.旋转角度.锁定旋转方向.获取方向改变事件的能力.使得特定 ...

  2. 【小月博客】用HTML5的File API做上传图片预览功能

    前段时间做了一个项目,涉及到上传本地图片以及预览的功能,正好之前了解过 html5(点击查看更多关于web前端的有关资源) 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了.(P ...

  3. HTML5 <Audio/>标签Api整理(二)

    1.实例2: 相对较完整 Html代码: <style> #volumeSlider .slider-selection { background:#bababa; } </styl ...

  4. HTML5文件操作API

    HTML5文件操作API       一.文件操作API 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或 ...

  5. 锚接口(下)——html5的history api

    概述 虽然html5的history api是H5专门用来解决记录历史记录和单页面的方法,但是很多老式的浏览器并不支持它,所以一般遇到老式的浏览器会做一个polyfill使用之前的hashchange ...

  6. 查看,设置,设备的 竖屏-横屏模式 screen.orientation

    <body> <div id="doc"></div> <div id="model"></div> ...

  7. HTML5 <Audio>标签API整理(三)

    一.浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 都支持 <audio> 元素. 注意: Internet Ex ...

  8. App/Activity/Screen Orientation

    测试android屏幕方向的小Demo 1.首先我们在values下面新建文件arrays.xml(用来在下拉列表中显示) <?xml version="1.0" encod ...

  9. 基于html5拖拽api实现列表的拖拽排序

    基于html5拖拽api实现列表的拖拽排序 html代码: <ul ondrop="drop_handler(event);" ondragover="dragov ...

随机推荐

  1. Microsoft Visual C++运行库合集下载(静默安装)

    Microsoft Visual C++运行库合集下载 CN启示录2013-06-02上传   Microsoft Visual C++运行库合集由国外网友McRip制作,包含了VC2005.VC20 ...

  2. 基于redis的cas集群配置(转)

    1.cas ticket统一存储 做cas集群首先需要将ticket拿出来,做统一存储,以便每个节点访问到的数据一致.官方提供基于memcached的方案,由于项目需要,需要做计入redis,根据官方 ...

  3. K. Perpetuum Mobile

    The world famous scientist Innokentiy almost finished the creation of perpetuum mobile. Its main par ...

  4. Python pip 安装包

    Python 第三方包可以使用pip 更容易地安装,和管理 pip 的下载地址 https://pypi.python.org/pypi/pip/ pip的使用以及相关文档参考 https://pip ...

  5. jquery ajax局部加载方法介绍

    [导读] 在jquery中实现ajax加载的方法有很多种,不像以前的js的ajax只有那一种,下面我们介绍jquery ajax实现局部加载方法总结,有需要了解的朋友可参考.例 代码如下复制代码 $ ...

  6. [置顶] oracle 数据库表中转换成java代码

    --数据库中字段java代码 select col.TABLE_NAME,replace(initcap(col.TABLE_NAME),'_', '')   , 'private '||decode ...

  7. openfire学习4------->android客户端聊天开发之聊天功能开发

    前面我们已经把服务器搭建完成,并且在客户端实现了登录了. 和我们使用的QQ一样,想一想,登录成功之后呢?肯定是要有一个好友列表,通过这个列表,我们可以选择我们需要聊天的好友. 这里我们先研究下 xmp ...

  8. LV在系统重启后不能自动激活(boot.lvm&after.loca)

    同类相关文章:http://blog.csdn.net/laven54/article/details/9121661 最近发现suse11sp2的系统解决了异常死机的问题之后,又引入了另外的问题,比 ...

  9. web服务器配置方法

    Web服务器概述 Web服务器又称为WWW服务器,它是放置一般网站的服务器.一台Web服务器上可以建立多个网站,各网站的拥有者只需要把做好的网页和相关文件放置在Web服务器的网站中,其它用户就可以用浏 ...

  10. Lua获取网络时间

    作者:ani_di  版权所有,转载务必保留此链接 http://blog.csdn.net/ani_di Lua获取网络时间 网络授时服务是一些网络上的时间服务器提供的时间,一般用于本地时钟同步. ...