如何检测移动设备方向的变化

除非你的应用程序限定了只在移动设备直立状态或水平状态下使用,一般情况下,你需要调整一些设定。即便你设计的布局流畅时尚,你可能需要改变某些编程代码。通常有以下一些小的策略用于检测移动设备方向的改变。

orientationchange事件

你等待一个移动API,一个简单的窗口orientationchange事件:


  1. // 监听方向的改变
  2. window.addEventListener("orientationchange", function() {
  3. // 宣布新方向的数值
  4. alert(window.orientation);
  5. }, false);

发生改变的时候, window.orientation属性就改变。值为0表示直立, 90表示设备水平旋转到左边, -90表示设备水平旋转到右边。

调整大小事件

有些设备不支持orientationchange事件,但可以触发resize事件:


  1. // 监听调整大小的改变
  2. window.addEventListener("resize", function() {
  3. // 得到屏幕尺寸 (内部/外部宽度,内部/外部高度)
  4. }, false);

跟orientationchange事件比起来较不明显,但也是很好用的。

屏幕尺寸

有一些属性可以从window对象恢复,以获取屏幕尺寸及我认为的“虚拟”屏幕大小:

  • 外部宽度,外部高度:真正不动的象素(而不是320×356iPhone直立像素)
  • 内部宽度,内部高度:虚拟不动的象素(而不是320×356iPhone直立像素)

当然,这些数据不能告诉你方向的变化,需要通过简答的数学计算,你就知道现在的窗口状态是更宽了还是更高了。

媒体查询

你还可以通过CSS媒体查询判定方向:


  1. /* portrait */
  2. @media screen and (orientation:portrait) {
  3. /* portrait-specific styles */
  4. }
  5. /* landscape */
  6. @media screen and (orientation:landscape) {
  7. /* landscape-specific styles */
  8. }

更聪明的做法是,用JavaScript编写一个循环的"watcher" ,用以检查一个块的背景颜色,并触发你自己的方向改变。 

匹配媒体

本地window.matchMedia方法允许实时媒体查询。我们可以利用以上媒体查询找到我们是处于直立或水平视角:


  1. // 寻找匹配
  2. var mql = window.matchMedia("(orientation: portrait)");
  3.  
  4. // 如果有匹配,则我们处于垂直视角
  5. if(mql.matches) {
  6. // 直立方向
  7. } else {
  8. //水平方向
  9. }
  10.  
  11. // 添加一个媒体查询改变监听者
  12. mql.addListener(function(m) {
  13. if(m.matches) {
  14. // 改变到直立方向
  15. }
  16. else {
  17. // 改变到水平方向
  18. }
  19. });

以上是一些建议,我也希望收集更多大家的方法!

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索事件
, window
, 方向
, 屏幕高度变化
, 检测移动设备
, orientation属性
, orientation
, 水平
, orientationchange
, 方向尺寸
, 移动方向
设备方向
检测移动方向、js检测移动设备、移动信号强度检测设备、php 检测移动设备、局域网检测 移动设备,以便于您获取更多的相关知识。

时间: 2024-10-28 11:15:44

如何检测移动设备方向的变化的相关文章

JS和css实现检测移动设备方向的变化并判断横竖屏幕

  这篇文章主要介绍了JS和css实现检测移动设备方向的变化并判断横竖屏幕,本文分别给出实现代码,需要的朋友可以参考下 方法一:用触发手机的横屏和竖屏之间的切换的事件 代码如下: window.addEventListener("orientationchange", function() { // 宣布新方向的数值 alert(window.orientation); }, false); 方法二:监听调整大小的改变 代码如下: window.addEventListener(&qu

通过JavaScript或PHP检测Android设备

随着乔布斯的回归,iPad2的发布,看来移动端的开发话题越来越火热了.在此列出一些能够在iOS的最大竞争者--安卓(Android)系统的检测方法. JavaScript判断方法 搜索user agent字符串中的Android单词是最省事儿的方法: if(navigator.userAgent.match(/Android/i)) {      // Do something!      // Redirect to Android-site?      window.location = '

Windows 8风格应用开发入门 十 设备方向

常用支持Windows 8操作系统设备的方向 在我们常用的设备当中,Windows 8是通过什么来监控设备方向呢?答案是方向传感器,那么对于设备的不同方向,方向传感器都对应哪些方向值呢?如下表: 开发入门 十 设备方向-windows开发入门"> 我们可以从表中知道: 1) 设备方向为水平方向向上(Portrait Up)时,对应传感器值为NotRotated(未发生旋转): 我们可以通过对比设备中Windows按钮的位置来识别不同方向,如下图所示: 2) 设备方向为竖直方向向左(Land

inotify检测不到/proc目录变化

问题描述 inotify检测不到/proc目录变化 使用inotify机制检测目录创建和删除动作,除了/proc目录不能检测,其他目录都可以捕捉到目录创建和删除动作,是因为/proc是虚拟文件系统就检测不到吗,求助~~~~急急急~~~ 附:用到的函数 inotify_init inotify_add_watch select监听文件描述 read 解决方案 对的,因为它不是一个文件夹,所以也就没有创建和删除 参考 Notify of changes on a file under /proc,里

检测移动设备(手机)的 PHP 类库

Mobile_Detect 是一个轻量级的开源移动设备(手机)检测的 PHP Class,它使用 User-Agent 中的字符串,并结合 HTTP Header,来检测移动设备环境.这个设备检测的 PHP 类库最强大的地方是,它有一个非常完整的库,可以检测出所用的设备类型(包括操作类型,以及手机品牌等都能检测)和浏览器的详细信息. http://mobiledetect.net/ //使用实例 include 'Mobile_Detect.php'; $detect = new Mobile_

Android开发入门(七)处理变化 7.3 检测屏幕的方向

有的时候,可能需要在运行时了解当前手机屏幕的方向.可以使用WindowManager类去实现这个功能.下 面的代码将展示如何通过编写代码去检测设备的屏幕方向: @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); WindowManager wm = getWindowManager(); Disp

三种检测iPhone/iPad设备方向的方法_javascript技巧

使用meta tag "viewport" viewport标签包含如下属性:   为了能自动探测并适配到屏幕宽度,应该使用device-with而不是设定一个固定值,另外为了避免用户缩放导致界面超出屏幕,需要设置maximum-scale, 复制代码 代码如下: <meta name="viewport" content="width=device-width, maximum-scale=1.0" /> 使用javascript脚

通过JavaScript或PHP检测Android设备的代码

随着乔布斯的回归,iPad2的发布,看来移动端的开发话题越来越火热了.在此列出一些能够在iOS的最大竞争者--安卓(Android)系统的检测方法. JavaScript判断方法 搜索user agent字符串中的Android单词是最省事儿的方法: 复制代码 代码如下: if(navigator.userAgent.match(/Android/i)) { // Do something! // Redirect to Android-site? window.location = 'http

通过JavaScript或PHP检测Android设备的代码_php技巧

随着乔布斯的回归,iPad2的发布,看来移动端的开发话题越来越火热了.在此列出一些能够在iOS的最大竞争者--安卓(Android)系统的检测方法. JavaScript判断方法 搜索user agent字符串中的Android单词是最省事儿的方法: 复制代码 代码如下: if(navigator.userAgent.match(/Android/i)) { // Do something! // Redirect to Android-site? window.location = 'http