- 浏览: 235676 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
李君寻:
内容挺好的,这是widget开发项目的大概框架吗?
Widget应用的基本组成 -
lliiqiang:
首先要有条件,算法只是提升系统而已。如果小范围变化基本可以尝试 ...
几个常用的检索排序算法的JavaScript实现 -
blessdyb:
aikki_gogh 写道最近正在研究canvas,求util ...
Canvas做游戏实践分享(十) -
aikki_gogh:
最近正在研究canvas,求utils.js和arrow.js ...
Canvas做游戏实践分享(十) -
Trinea:
请问你博客百度的广告怎么加的,不会是手动每天文章添加js吧
HTML5 WebGame开源工具之impactjs
Mobile Web开发基础之四————处理设备的横竖屏
为了应对移动设备屏幕的碎片化,我们在开发Mobile Web应用时,一个最佳实践就是采用流式布局,保证最大可能地利用有限的屏幕空间。由于屏幕存在着方向性,用户在切换了屏幕的方向后,有些设计上或实现上的问题就会凸显——我们至少需要处理一下当前显示元素的宽度的适配(当然,要做的可能不仅仅是这个)。很多时候,我们需要为不同的屏幕方向来设计对应的应用显示模式,这个时候,实时地获知设备的模竖屏状态就显得极为重要。
- window.orientation属性与onorientationchange事件
window.orientation :这个属性给出了当前设备的屏幕方向,0表示竖屏,正负90表示横屏(向左与向右)模式
onorientationchange : 在每次屏幕方向在横竖屏间切换后,就会触发这个window事件,用法与传统的事件类似
1:使用onorientationchange事件的回调函数,来动态地为body标签添加一个叫orient的属性,同时以body[orient=landspace]或body[orient=portrait]的方式在css中定义对应的样式,这样就可以实现在不同的屏幕模式下显示不同的样式。如下代码示例:
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;"> <title>横竖屏切换检测</title> <style type="text/css"> body[orient=landscape]{ background-color: #ff0000; } body[orient=portrait]{ background-color: #00ffff; } </style> </head> <body orient="landspace"> <div> 内容 </div> <script type="text/javascript"> (function(){ if(window.orient==0){ document.body.setAttribute("orient","portrait"); }else{ document.body.setAttribute("orient","landscape"); } })(); window.onorientationchange=function(){ var body=document.body; var viewport=document.getElementById("viewport"); if(body.getAttribute("orient")=="landscape"){ body.setAttribute("orient","portrait"); }else{ body.setAttribute("orient","landscape"); } }; </script> </body> </html>
2: 类似的思路,不通过CSS的属性选择器来实现,如下代码的实现方案:
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;"> <title>横竖屏切换检测</title> <style type="text/css"> .landscape body { background-color: #ff0000; } .portrait body { background-color: #00ffff; } </style> </head> <body orient="landspace"> <div> 内容 </div> <script type="text/javascript"> (function(){ var init=function(){ var updateOrientation=function(){ var orientation=window.orientation; switch(orientation){ case 90: case -90: orientation="landscape"; break; default: orientation="portrait"; break; } document.body.parentNode.setAttribute("class",orientation); }; window.addEventListener("orientationchange",updateOrientation,false); updateOrientation(); }; window.addEventListener("DOMContentLoaded",init,false); })(); </script> </body> </html>
- 使用media query方式
这是一种更为方便的方式,使用纯CSS就实现了对应的功能,如下代码演示:
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;"> <title>横竖屏切换检测</title> <style type="text/css"> @media all and (orientation : landscape) { body { background-color: #ff0000; } } @media all and (orientation : portrait){ body { background-color: #00ff00; } } </style> </head> <body> <div> 内容 </div> </body> </html>
- 低版本浏览器的平稳降级
如果目标移动浏览器不支持media query,同时window.orientation也不存在,则我们需要采用另外一种方式来实现————使用定时器“伪实时”地对比当前窗口的高(window.innerHeight)与宽(window.innerWidth)之比,从而判定当前的横竖屏状态。如下代码所示:
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;"> <title>按键</title> <style type="text/css"> .landscape body { background-color: #ff0000; } .portrait body { background-color: #00ffff; } </style> <script type="text/javascript"> (function(){ var updateOrientation=function(){ var orientation=(window.innerWidth > window.innerHeight)? "landscape" : "portrait"; document.body.parentNode.setAttribute("class",orientation); }; var init=function(){ updateOrientation(); window.setInterval(updateOrientation,5000); }; window.addEventListener("DOMContentLoaded",init,false); })(); </script> </head> <body> <div> 内容 </div> </body> </html>
- 统一解决方案
将以上的两种解决方案整合在一起,就可以实现一个跨浏览器的解决方案,如下代码:
<!Doctype html> <html> <head> <meta charset="utf-8"> <meta id="viewport" name="viewport" content="width=device-width,initial-scale=1.0;"> <title>横竖屏切换检测</title> <style type="text/css"> .landscape body { background-color: #ff0000; } .portrait body { background-color: #00ffff; } </style> <script type="text/javascript"> (function(){ var supportOrientation=(typeof window.orientation == "number" && typeof window.onorientationchange == "object"); var updateOrientation=function(){ if(supportOrientation){ updateOrientation=function(){ var orientation=window.orientation; switch(orientation){ case 90: case -90: orientation="landscape"; break; default: orientation="portrait"; } document.body.parentNode.setAttribute("class",orientation); }; }else{ updateOrientation=function(){ var orientation=(window.innerWidth > window.innerHeight)? "landscape":"portrait"; document.body.parentNode.setAttribute("class",orientation); }; } updateOrientation(); }; var init=function(){ updateOrientation(); if(supportOrientation){ window.addEventListener("orientationchange",updateOrientation,false); }else{ window.setInterval(updateOrientation,5000); } }; window.addEventListener("DOMContentLoaded",init,false); })(); </script> </head> <body> <div> 内容 </div> </body> </html>
【原文】http://davidbcalhoun.com/2010/dealing-with-device-orientation
发表评论
-
Mobile Web开发基础之三————由按键想到的
2012-05-17 22:33 2017按钮是天生为 ... -
Mobile Web开发基础之二————开发环境套件一览
2012-05-17 21:15 2124做为一个Mobile Web开发者,我们除了拥有真机外(这个对 ... -
Mobile Web开发基础之一————viewport标签
2012-05-17 20:04 4184再挖一个坑 ,canvas的游戏开发基础暂时 ... -
Fibonacci的非递归实现,Mobile Web横竖屏检测等
2012-05-17 18:29 0工作需要,碰到几个问题,依次罗列如下 1. Fibon ... -
几个常用的检索排序算法的JavaScript实现
2012-05-15 01:04 2406近期工作需要,开始复习相关的检索排序算法。对常用的几个算法,自 ... -
Canvas绘制的简单模拟时钟
2012-01-17 17:09 1263下午碰到这个问题,刚开始懵了,理一下思路,很简单的事情。 ... -
JavaScript 创建对象方法列举
2011-07-19 00:06 1209JavaScript 中没有类的概念,所以它的对象 ... -
JavaScript Random
2011-07-18 10:13 1130Math.random()方法返回介于0和1之间的一 ... -
no.de 使用测试
2011-04-18 18:34 1619最近折腾nodejs的人越来越多了,强大的joyent的兄弟们 ... -
使用widget进行简单移动应用开发(一)
2010-10-11 21:19 1262Widget主要作为Web 2.0服务或互联网内容的前端 ... -
JavaScript函数的几种特殊形式
2010-06-02 21:20 2201除了基本的脚本语言的函数使用,JavaScr ... -
Firebug七大扩展利器
2010-05-31 17:58 2423Firebug是我们Web开发中的不可缺少的工具,它的 ... -
JavaScript内置函数使用细节
2010-05-30 18:03 1452闲来无事,开始看Object-Oriented Ja ... -
基于OPhone的Mobile Widget联机应用开发基础
2009-12-30 10:39 1171在iPhone 引领的软件用户体验革命的潮流时,UI ... -
移动互联时代,Mobile widget将大行其道?
2009-12-02 21:53 1396目前,Widget在国内的发展如星星之火,镶嵌在博 ... -
使用jQuery来完成键盘事件的浏览器匹配
2009-11-03 20:54 2291最近写一个小的widget,需要来完成对于键盘事件 ... -
JavaScript Date 对象与函数
2009-06-05 10:28 1592JavaScript Date 对象与函数 目录 ... -
Widget开发中的一些专门的术语
2009-04-03 10:27 1365Control A control is a user int ... -
Widget应用的基本组成
2009-03-27 13:20 2964widget开发在最 ... -
什么是Widget
2009-03-26 20:01 2675移动互联网的兴起 ...
相关推荐
为了应对移动设备屏幕的碎片化,我们在开发Mobile Web应用时,一个最佳实践就是采用流式布局,保证最大可能地利用有限的屏幕空间。由于屏幕存在着方向性,用户在切换了屏幕的方向后,有些设计上或实现上的问题就会...
在开发Mobile Web应用时,处理手机设备的横竖屏问题是必不可少的。这涉及到对不同屏幕尺寸和方向的适应,以确保用户体验的流畅性和界面的视觉一致性。本文将深入探讨两种常用的技术方法:window.orientation属性和...
"电大web开发基础形考5.pdf" 本资源主要讲述了电商网站前端页面响应式设计实验,实验目标是将首页改为响应式设计,使用Bootstrap栅格系统实现响应式网页设计。下面将对实验报告的内容进行详细分析和总结。 实验...
"Mobile WEB 页面开发" 移动 Web 开发是指使用 Visual Studio 进行移动 Web 应用程序的开发。移动 Web 窗体页是一种专用的移动 Web 窗体页,它与任何其他 Web 窗体页一样,都是带.aspx 文件扩展名的文本文件。移动 ...
3. **配置模拟器或连接实际设备**: 开发初期,你可以使用Windows Mobile设备模拟器进行测试,它模拟了真实设备的环境。若要连接实际设备,需要确保设备已开启开发者模式,并通过USB数据线与电脑相连。 4. **创建新...
Windows Mobile是微软为掌上设备如智能手机和平板电脑设计的操作系统,它提供了丰富的API和工具来支持应用程序开发,包括游戏。在第二部分,我们专注于游戏设计的准备知识,这将为我们后续的编程工作奠定基础。 ...
在Android平台上,开发一款支持二维码扫描的应用时,通常会遇到横屏和竖屏两种设备方向的问题。本主题主要探讨如何在Android应用中处理这两种屏幕方向,确保二维码扫描功能的正常运行。 首先,Android系统允许应用...
- **ASP.NET Mobile Controls**:这是微软为开发移动Web应用程序提供的一套工具包,它包含了一系列控件,这些控件专为移动设备优化,可以适应不同的设备类型和屏幕尺寸。 - **移动Web应用开发**:随着智能手机和平板...
浏览器可以通过监听窗口尺寸变化(resize事件)来判断屏幕是横屏还是竖屏,而设备方向传感器则可以提供实际的物理方向信息。强制横屏的关键在于如何合理地结合这两点,使网页始终呈现横屏布局。 1. **CSS媒体查询**...
**jQuery Mobile Web API 开发详解** 在Web应用开发中,jQuery Mobile 和 Web API 结合使用可以构建出功能强大且响应式的移动应用。本教程将深入探讨如何利用jQuery Mobile与C#实现的Web API2接口进行交互,展示...
本篇文章将详细探讨如何利用ASP.NET技术进行MobileWeb应用的开发。 一、理解MobileWeb应用与ASP.NET MobileWeb应用是专门为移动设备设计的网页应用,它们通常需要适配不同屏幕尺寸、操作系统和网络环境。ASP.NET...
.NET Compact Framework是微软为嵌入式设备和移动设备如Windows Mobile操作系统提供的一个精简版的.NET框架。这个框架使得开发者可以使用.NET Framework的大部分功能,包括C#、VB.NET等编程语言,来创建高效能、功能...
**J2ME游戏开发之RPG——源码详解** J2ME(Java 2 Micro Edition)是Java平台的一个子集,主要用于嵌入式设备和移动设备的开发,如早期的智能手机和平板电脑。在J2ME中开发角色扮演游戏(RPG)是一项挑战性的任务,...
### Head First Mobile Web:关键技术与应用实践 #### 一、移动网络环境的演变与挑战 随着移动设备(如智能手机和平板电脑)的普及,越来越多的用户选择通过这些设备访问互联网。这种趋势使得移动网络的使用量正在...
ASP.NET Mobile Controls是微软提供的一套专门用于构建移动Web应用程序的工具集,它允许开发者使用ASP.NET技术来创建适应各种移动设备的网页。在本文中,我们将深入探讨如何利用ASP.NET Mobile Controls进行移动Web...
.NET Compact Framework是微软推出的一个专门针对嵌入式设备和移动计算平台的框架,它为开发者提供了在Windows Mobile设备上构建应用程序的能力。这个框架是.NET Framework的一个精简版本,旨在满足移动设备有限的...
### 手机网页开发——《Programming the Mobile Web》精要解析 #### 一、书籍概述 《Programming the Mobile Web》是一本由Maximiliano Firtman编写的关于移动网络开发的专业指南。本书全面深入地介绍了移动开发...
《Head First之Mobile Web》是一本专为初学者设计的移动网页开发教程,以其独特的图文并茂的教学方式,深入浅出地介绍了移动互联网世界的各个方面。这本书涵盖了从基础概念到实践应用的所有关键知识点,旨在帮助读者...
《Head First Mobile Web》是一本专注于移动Web开发领域的图书,它详细介绍了如何创建能在多种设备和浏览器上运行的移动网站。本书在2011年12月出版,以PDF格式呈现给读者,提供了从基础到高级的移动Web开发技术介绍...
移动Web的使用在呈爆炸式增长。很快,人们会更愿意在手机和平板电脑而不是PC机上浏览网页。...使用*的开发技术,包括响应式Web设计,以及利用WURFL完成服务器端设备检测;通过图片、谜题、故事和问答轻松学习。