jQuery Mobile 在刚推出的时候,曾经宣传了几个重要的特点,除了 Kayo 在本系列文章中多次介绍的“触摸屏优化”外,另外一个最直接的特点就是“响应式设计”,关于响应式设计,Kayo 已经写了不少相关的文章进行说明,而本文要介绍的,是 jQuery Mobile 中为响应式设计作出的优化和工具。

在 jQuery Mobile 测试版本的文档中,有一个栏目名为“Responsive Layout Helpers”,即响应式布局助手,但在正式版的文档中,却删去了这个栏目,但这并不意味着 jQuery Mobile 削减了对响应式设计的支持,相反,jQuery Mobile 对响应式设计有着更好的支持,而且这种支持是融入到 jQuery Mobile 的设计中,并不完全依靠开发者调用工具来调整网页达到完善的响应式布局。由于很多响应式的内容 Kayo 之前已经写文章介绍过,因此本文只会对这些内容作出汇总和简介,详细内容请参考具体的相关文章。

一. Media Queries

在 jQuery Mobile 的 CSS 源码中,会有大量类似下面的代码:

@media only screen and (-webkit-min-device-pixel-ratio: 1.5),only screen and (min--moz-device-pixel-ratio: 1.5),only screen and (min-resolution: 240dpi) {.ui-icon-plus, .ui-icon-minus, .ui-icon-delete, .ui-icon-arrow-r,.ui-icon-arrow-l, .ui-icon-arrow-u, .ui-icon-arrow-d, .ui-icon-check,.ui-icon-gear, .ui-icon-refresh, .ui-icon-forward, .ui-icon-back,.ui-icon-grid, .ui-icon-star, .ui-icon-alert, .ui-icon-info, .ui-icon-home, .ui-icon-search, .ui-icon-searchfield:after,.ui-icon-checkbox-off, .ui-icon-checkbox-on, .ui-icon-radio-off, .ui-icon-radio-on {background-image: url(images/icons-36-white.png);-moz-background-size: 776px 18px;-o-background-size: 776px 18px;-webkit-background-size: 776px 18px;background-size: 776px 18px;}.ui-icon-alt {background-image: url(images/icons-36-black.png);}}

这是 Media Queries ,可以根据条件匹配相应的 CSS ,这样在不同的情况下可以应用相应的 CSS ,以达到自适应的效果。关于 Media Queries ,Kayo 之前已经写了一篇文章进行详细的介绍,请参考 ——

另外,jQuery Mobile 默认会对组件进行结构、样式和交互上的增强,因此除了使用 Media Queries 为不同的情况匹配相应的 CSS 外,jQuery Mobile 在设计增强的组件结构时也针对响应式布局进行设计,使到由 jQuery Mobile 驱动的 Web Apps 在外观上可以更加灵活。

二. 运行媒介查询 (Running Media Queries)

运行媒介查询 (Running Media Queries) 是 jQuery Mobile 的一个实用工具,它在 jQuery Mobile 内部有多次调用,主要是确保一些效果能够在合适的情况下运行。例如:在介绍 jQuery Mobile 页面转场时,有说明过,当转场页面的宽度过大时,翻转等 3D 效果可能会过度消耗系统资源,因此开发者可以使用 $.mobile.maxTransitionWidth 控制转场最大宽度,超过该宽度则不使用转场动画,而判断宽度是否超过设定值的技术原理就是利用运行媒介查询。作为开发者,我们也可以利用则个工具帮助我们 进行响应式设计,这里需要明确一点,这个工具的作用是判断当前情况是否已经满足一个 Media Queries ,即使用 JavaScript 判断 Media Queries 内的条件是否满足。如果你已经了解了第一部分的内容,会了解到在开发中可以根据 Media Queries 的结果判断是否应该引入一段 CSS ,但网页布局中有时候也需要判断是否引入 JavaScript ,运行媒介查询正是可以用于判断是否应该引入一段 JavaScript 。

例如:

$.mobile.media('screen') // 测试媒体类型是否为 'screen'
$.mobile.media('screen and (min-width: 480px)') // 测试媒体类型是否为 'screen' 并且窗口宽度大于等于 '480px'
$.mobile.media('@media screen and (-webkit-min-device-pixel-ratio: 2)') // 测试是否为 webkit 内核并且像素比为 2x (可以用来判断是否为 iPhone 4)// 根据判断结果作出相应的处理
if( $.mobile.media('screen and (min-width: 480px)') )// 相应的处理

三.设备方向变化事件与方向类

当设备方向变化(即设备在横向和纵向的方向间转变)时,会触发 orientationchange 事件,这个事件的回调函数的事件对象(e 或 event)中会封装一个 orientation 属性,其值为 "portrait" 或 "landscape" ,用来描述设备是改变为纵向时触发事件还是改变为横向时触发事件。在旧版本的 jQuery Mobile ,这个值也会作为 class 添加到 html 标签中,让开发者可以依据这个 class 添加相应的 css ,即方向类,但在新版的文档中已经没有关于方向类的说明,Kayo 调试后也没有出现相应的方向类,因此在新版 jQuery Mobile 中已经不支持原生方向类,但可以通过 jQuery 达到相同的效果,例如:

$(window).bind( 'orientationchange', function(e){if( e.orientation == 'portrait' ) $('html').addClass('portrait').removeClass('landscape');else if( e.orientation == 'landscape' ) $('html').addClass('landscape').removeClass('portrait');});

分别为 landscape 和 portrait 指定相应的样式即可。

另外,关于 orientationchange 事件的绑定元素和不支持该事件时的处理也需要特别注意,具体可以参考 —— 《使用 jQuery Mobile 与 HTML5 开发 Web App —— jQuery Mobile 事件详解》的第三部分“设备方向变化事件 (Orientation change event)”。

最后补充一个 Demo ,建议在 Android , iPhone/iPad 的系统浏览器上浏览,用于测试 orientationchange 的基本效果。

关于响应式设计的详细说明。可以参考 —— 《前端开发之响应式设计》

至本文为止,已经用了 15 篇文章详细阐述 jQuery Mobile 的各个组件、事件、方法以及其中的 Ajax 机制、增强机制和执行流程等技术原理,相信各位对 jQuery Mobile 已经有了一定的熟悉,接下来要说明的,是 HTML5 在 Web Apps 上的应用。实际上,HTML5 有很多相对于 HTML4 的新特性都是为移动开发而设计的,因此这也是对一系列 HTML5 新特性的说明。

原文由 Kayo Lee 发表,原文链接:http://kayosite.com/web-app-by-jquery-mobile-and-html5-responsive-of-web.html

使用 jQuery Mobile 与 HTML5 开发 Web App (十五) —— jQuery Mobile 与响应式相关推荐

  1. 使用 jQuery Mobile 与 HTML5 开发 Web App (十四) —— jQuery Mobile 方法下

    本文承接上文<使用 jQuery Mobile 与 HTML5 开发 Web App -- jQuery Mobile 方法上>,继续说明 jQuery Mobile 的方法,这部分内容主 ...

  2. 使用 jQuery Mobile 与 HTML5 开发 Web App (十二) —— jQuery Mobile 页面事件与 deferred

    在系列的上一篇文章<使用 jQuery Mobile 与 HTML5 开发 Web App -- jQuery Mobile 事件详解>中,Kayo 介绍了除页面事件外的其他 jQuery ...

  3. 使用 jQuery Mobile 与 HTML5 开发 Web App (十九) —— HTML5 对 Web App 的影响

    在本系列文章的开头,Kayo 曾经介绍过 Web App 的优缺点,并且说明了 HTML5 在其中起的作用,当然,Web Apps 的发展需要 HTML5 , CSS 与 JavaScript 以及后 ...

  4. 使用 jQuery Mobile 与 HTML5 开发 Web App (十) —— jQuery Mobile 默认配置与事件基础

    从本文开始,使用 jQuery Mobile 与 HTML5 开发 Web App 系列将 会进入第三部分--jQuery Mobile 事件与方法,这其中将会利用之前所讲述的 jQuery Mobi ...

  5. 使用 jQuery Mobile 与 HTML5 开发 Web App (十六) —— HTML5 Web Storage

    绝大多数的软件都需要使用某种具有持久性的方式来存储数据,Web Apps 也不例外,涉及到完整后台的 Web Apps ,可以直接在后台使用 mysql 等数据库来存储数据,但过多的 sql 查询会影 ...

  6. 使用 jQuery Mobile 与 HTML5 开发 Web App (十八) —— HTML5 Web Workers

    本文要介绍的是 HTML5 的 Web Workers 特性,它解决了 JavaScript 开发中一个重大的问题 -- 在后台运行 JavaScript .与本系列前两篇文章介绍的特性相似,Web ...

  7. 使用 jQuery Mobile 与 HTML5 开发 Web App (十三) —— jQuery Mobile 方法上

    本篇介绍的,是 jQuery Mobile 的方法.对比于 jQuery 方法可以实现 DOM 遍历,动画,Ajax 等各种丰富的操作,jQuery Mobile 的方法更像是 jQuery Mobi ...

  8. 使用 jQuery Mobile 与 HTML5 开发 Web App (十一) —— jQuery Mobile 事件详解

    在前文<使用 jQuery Mobile 与 HTML5 开发 Web App -- jQuery Mobile 默认配置与事件基础>中,Kayo 对 jQuery Mobile 事件的基 ...

  9. 使用 jQuery Mobile 与 HTML5 开发 Web App (九) —— jQuery Mobile 页面与对话框

    在<使用 jQuery Mobile 与 HTML5 开发 Web App -- jQuery Mobile 基础>中,Kayo 曾经简略介绍过 jQuery Mobile 的页面组件,当 ...

最新文章

  1. Object.keys()
  2. Android 文件布局一些细节备忘
  3. 聊天工具简单实现(python 半双工聊天)
  4. Java使用PDFBox开发包实现对PDF文档内容编辑与保存
  5. catch后面的代码会执行吗_字节码层面理解try、catch、finally
  6. sublime开启vim模式
  7. linux脚本日期时间,Linux 日期和时间操作详解
  8. Ubuntu18.04安装ROS Melodic(亲测有效)
  9. springboot 使用mybatis-plus 配置乐观锁
  10. 长虹CIRI语音智能电视技术原理简析
  11. java输出到txt,换行问题
  12. IAR基础教程之函数跳转
  13. 关于VGGNet网络结构浅谈(主要是VGG16结构)
  14. vm虚拟机显卡是不是比服务器主板上的要好,自VM11起,虚拟显卡的性能是增强还是削弱?...
  15. 大连商务英语学校百家外语国际部商务英语与普通英语的不同之处
  16. 基于SVM的猫咪图片识别器
  17. win10电脑桌面透明便签_DesktopNoteOK桌面便签小工具下载|windows10桌面透明便签插件_最火软件站...
  18. matlab 插值生成曲面,[转]Matlab曲面拟合和插值
  19. Linux C语言磁盘U盘容量读取、目录列表读取、文件夹大小读取
  20. 经济学人信息部:2012年大数据研究报告:商业领袖们的经验

热门文章

  1. 训练日志 2019.1.25
  2. 计算几何 —— 二维几何基础
  3. 理论基础 —— 排序 —— 归并排序
  4. 信息学奥赛C++语言:趣味整数2(亲密数)
  5. 信息学奥赛C++语言:for_求和
  6. 信息学奥赛C++语言:输出浮点数(1)
  7. 2 SD配置-企业结构-定义-定义分销渠道
  8. 30 CO配置-控制-产品成本控制-成本对象控制-期末结算-定义更新
  9. android 游戏引擎 排行_4月旗舰手机性能排行榜:小米10 Pro第四,OPPO Ace2第五
  10. python画有权重网络图_使用Python的networkx绘制精美网络图教程