HTML5: Screen Orientation API
媒体的询问取决于智能手机和平板布局调整的方向一致网站。但有时候你被锁定在一个希腊网站特定方向。横向或纵向。此时,是本机格式可以指定保健应用。
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-primary、 portrait-secondary或landscape-primary、 landscape-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的更多相关文章
- 屏幕方向读取与锁定:Screen Orientation API(转)
什么是 Screen Orientation API Screen Orientation API 为 Web 应用提供了读取设备当前屏幕方向.旋转角度.锁定旋转方向.获取方向改变事件的能力.使得特定 ...
- 【小月博客】用HTML5的File API做上传图片预览功能
前段时间做了一个项目,涉及到上传本地图片以及预览的功能,正好之前了解过 html5(点击查看更多关于web前端的有关资源) 可以上传本地图片,然后再网上看了一些demo结合自己的需求,终于搞定了.(P ...
- HTML5 <Audio/>标签Api整理(二)
1.实例2: 相对较完整 Html代码: <style> #volumeSlider .slider-selection { background:#bababa; } </styl ...
- HTML5文件操作API
HTML5文件操作API 一.文件操作API 在之前我们操作本地文件都是使用flash.silverlight或者第三方的activeX插件等技术,由于使用了这些技术后就很难进行跨平台.或 ...
- 锚接口(下)——html5的history api
概述 虽然html5的history api是H5专门用来解决记录历史记录和单页面的方法,但是很多老式的浏览器并不支持它,所以一般遇到老式的浏览器会做一个polyfill使用之前的hashchange ...
- 查看,设置,设备的 竖屏-横屏模式 screen.orientation
<body> <div id="doc"></div> <div id="model"></div> ...
- HTML5 <Audio>标签API整理(三)
一.浏览器支持 Internet Explorer 9+, Firefox, Opera, Chrome, 和 Safari 都支持 <audio> 元素. 注意: Internet Ex ...
- App/Activity/Screen Orientation
测试android屏幕方向的小Demo 1.首先我们在values下面新建文件arrays.xml(用来在下拉列表中显示) <?xml version="1.0" encod ...
- 基于html5拖拽api实现列表的拖拽排序
基于html5拖拽api实现列表的拖拽排序 html代码: <ul ondrop="drop_handler(event);" ondragover="dragov ...
随机推荐
- php调用dll
http://download.csdn.net/detail/pinghe2005/5108556
- 8天玩转并行开发——第二天 Task的使用
原文 8天玩转并行开发——第二天 Task的使用 在我们了解Task之前,如果我们要使用多核的功能可能就会自己来开线程,然而这种线程模型在.net 4.0之后被一种称为基于 “任务的编程模型”所冲击, ...
- 52. 模版和设计元素——Lotus Notes的代码重用
不论是理论上还是实用上,代码重用都是编程的一个重要议题.可以从两个角度来讨论代码重用. 一是逻辑上代码以怎样的方式被重用.既可以通过面向对象的思想普及以来耳熟能详的继承的方式.比如先建了一个车的基类, ...
- Linux账号管理(二)
再次声明,整理此系列Linux博客,主要目的不是介绍各种命令,而是去探索命令背后的理论. 本篇主要介绍用户的创建与删除. 创建用户主要用到useradd命令,在用此命令时可以指定各种参数.一般默认就可 ...
- VC++ WIN32 sdk实现按钮自绘详解 之二(关键是BS_OWNERDRAW和WM_DRAWITEM)
网上找了很多,可只是给出代码,没有详细解释,不便初学者理解.我就抄回冷饭.把这个再拿出来说说. 实例图片: 首先建立一个标准的Win32 Application 工程.选择a simple Wi ...
- Boost Thread学习笔记三
下面先对condition_impl进行简要分析.condition_impl在其构造函数中会创建两个Semaphore(信号量):m_gate.m_queue,及一个Mutex(互斥体,跟boost ...
- Android:自定义滚动边缘(EdgeEffect)效果
Android可滚动控件(GridView.ListView.ScrollView等)当用户滚动到头的时候会有个边缘反馈效果,在4.0上默认为Holo蓝色效果. 如果您的App自定义了主题颜色,比如 ...
- 两道二分coming~
第一道:poj 1905Expanding Rods 题意:两道墙(距离L)之间架一根棒子,棒子受热会变长,弯曲,长度变化满足公式( s=(1+n*C)*L),求的是弯曲的高度h. 首先来看这个图: ...
- 【从cocos2d-x学习设计模式】第一阶段:辛格尔顿
设计模式,它总结了前辈在许多方案重用代码.它是一个想法. 因为我们爱cocos2d-x,然后我们从去cocos2d-x在设计模式中,右一起学习!本篇解释未来辛格尔顿. 提cocos2d-x中间Dire ...
- 如何在Android Studio上使用Github
首先,登陆到Github上并创建一个新repository.在屏幕右上角,点击“+”标记,并且选择“New repository”. 现在完成这个表格以新建一个叫做testproject的新repos ...