【技术分享】JQuery Mobile转场分析

关于使用JQM(JQuery Mobile)看到很多人提出的第一句话就是性能不行,再问就是转场闪屏等.这里就分享下我对转场的一些学习成果.

JQM的转场实际上利用的全部是CSS,只是简单的一个addClass 和removeClass.下面是带动画转场的函数

Java script代码  

  1. function css3TransitionHandler( name, reverse, $to, $from ) {
  2. var deferred = new $.Deferred(),
  3. reverseClass = reverse ? " reverse" : "",
  4. viewportClass = "ui-mobile-viewport-transitioning viewport-" + name,
  5. doneFunc = function() {
  6. $to.add( $from ).removeClass( "out in reverse " + name );
  7. if ( $from && $from[ 0 ] !== $to[ 0 ] ) {
  8. $from.removeClass( $.mobile.activePageClass );
  9. }
  10. $to.parent().removeClass( viewportClass );
  11. deferred.resolve( name, reverse, $to, $from );
  12. };
  13. $to.animationComplete( doneFunc );
  14. $to.parent().addClass( viewportClass );
  15. if ( $from ) {
  16. $from.addClass( name + " out" + reverseClass );
  17. }
  18. $to.addClass( $.mobile.activePageClass + " " + name + " in" + reverseClass );
  19. return deferred.promise();
  20. }

从中可以看到,只有各种的样式切换,除此以外别无它物.至于 $.Deferred()是JQuery提供的延迟处理的机制,这里不做讨论.

简单看看这个函数的4个参数,分别是转场效果名称、是否回退、前一页面jq对象、目标页面jq对象。处理的逻辑描述起来也非常简单:

1.是否存在前一个页面,存在增加out 
2.为目标页面增加in和激活页面样式 
3.当页面动画完成删除前一个页面的激活页面样式和目标页面转场样式

接下来看看CSS部分,其实所有的东西都可以用一个transform(至于transform这里也不做解释)搞定,以slide为例

Css代码  

  1. .slide.out {
  2. -webkit-transform: translateX(-100%);
  3. -webkit-animation-name: slideouttoleft;
  4. }
  5. .slide.in {
  6. -webkit-transform: translateX(0);
  7. -webkit-animation-name: slideinfromright;
  8. }
  9. .slide.out.reverse {
  10. -webkit-transform: translateX(100%);
  11. -webkit-animation-name: slideouttoright;
  12. }
  13. .slide.in.reverse {
  14. -webkit-transform: translateX(0);
  15. -webkit-animation-name: slideinfromleft;
  16. }

实际上就是通过-webkit-animation-name指定了一组动画效果

Css代码  

  1. @-webkit-keyframes slideinfromright {
  2. from { -webkit-transform: translateX(100%); }
  3. to { -webkit-transform: translateX(0); }
  4. }
  5. @-webkit-keyframes slideinfromleft {
  6. from { -webkit-transform: translateX(-100%); }
  7. to { -webkit-transform: translateX(0); }
  8. }
  9. @-webkit-keyframes slideouttoleft {
  10. from { -webkit-transform: translateX(0); }
  11. to { -webkit-transform: translateX(-100%); }
  12. }
  13. @-webkit-keyframes slideouttoright {
  14. from { -webkit-transform: translateX(0); }
  15. to { -webkit-transform: translateX(100%); }
  16. }

所以如果需要扩展自己的类型,只要按照约定新增自己的样式表就可以做到。

另外关于JQM转场闪屏的问题,其实可以通过下面的样式修正

Css代码  

  1. .ui-page {
  2. backface-visibility: hidden;
  3. -webkit-backface-visibility: hidden; /* Chrome and Safari */
  4. -moz-backface-visibility: hidden; /* Firefox */
  5. }

只需要在页面元素增加背面不可见,来防止动画发生的时候产生的闪屏.我在HTC G17 的真机环境下,没有任何问题.

PS:如果需要更改动画速度,只需要更改下面的-webkit-animation-duration即可

Css代码  

    1. .in, .out {
    2. -webkit-animation-timing-function: ease-in-out;
    3. -webkit-animation-duration: 350ms;
    4. }

原文链接  http://peng-jiesi.iteye.com/blog/1457463

时间: 2024-12-24 06:03:04

【技术分享】JQuery Mobile转场分析的相关文章

Android+Jquery Mobile学习系列(4)-页面跳转及参数传递

关于页面转场,这个必须得专门列出来说明一下,因为Jquery Mobile与普通的Web发开有一些区别,这个对于新手如果不了解的话,就会钻到死胡同.撸主前段时间就是很急躁地上手开发程序,结果在页面转场和参数传递的时候遇到各种奇怪的问题,最后几乎打算删掉html,改用Android原生layout来做程序了. 不得不说,Jquery mobile给我们这种做Java Web项目的人带来了很多新鲜的玩意儿,虽然多多少少有些不适应,但是我们得被动接受,久而久之就习惯. 前面一对废话结束,下面正式开始本

【课程分享】HTML5开发框架PhoneGap实战(jQuery Mobile开发、API解析、3个经典项目实战)

对这个课程有兴趣的朋友可以加我的QQ2059055336和我联系 课程讲师:厉风行 课程分类:Java 涉及项目:我要地图.豆瓣音乐.小强快跑 用到技术:HTML5.jQuery Mobile.PhoneGap 其他特性:PhoneGap API 涵盖内容:代码.视频.ppt 课时数量:40 PhoneGap前景 Adobe最近公开表示将会为HTML5开发推出更多有意义的工具.有业内人士表示,Adobe的HTML5战略特别值得注意,此外Adobe对于乔布斯的此番公开批评曾积极地回应道:"乔布斯说

课程分享】基于Springmvc+Spring+Mybatis+Bootstrap+jQuery Mobile +MySql教务管理系统

课程讲师:老牛 课程分类:Java框架 适合人群:初级 课时数量:85课时 更新程度:完成 用到技术:Springmvc+Spring+Mybatis+Bootstrap+jQueryMobile 涉及项目:PC端和手机端教务管理系统 需要更多相关资料可以联系 Q2748165793 课程大纲 技能储备 第1课springMVC概述和基础配置 第2课springMVC注解和参数传递 第3课springMVC和JSON数据 第4课springMVC上传下载 第5课springMVC 与 sprin

【课程分享】ASP.NET MVC5&微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)

对这个课程有兴趣的,能够联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲-C#核心语言特性 第四讲-C#核心语言特性(二) 第五讲-视图引擎Razor 第六讲-MVC核心工具 实战演练(11讲) 第七讲-体育商店(一):项目架构 第八讲-体育商店(二):数据库创建和訪问 第九讲-体育商店(三):分页和样式 第十讲-体育商店(四):布局和导航 第十一讲-体育商店(五):购物

分享自制的13套 JQuery Mobile 界面主题

15套整合在一起的,其中2套官方+13套自制,款款精致,方便移动开发. 字体默认为微软雅黑. 适配于 JQuery Mobile 1.4.3 下载地址:http://files.cnblogs.com/SkyD/jquery-mobile-theme-155558-0.zip "少于200字的文章不允许发布到网站首页",博客园现在的这个限制真恶心,那么: 少于200字的文章不允许发布到网站首页少于200字的文章不允许发布到网站首页少于200字的文章不允许发布到网站首页少于200字的文章

【课程分享】ASP.NET MVC5&微信公众平台整合开发实战(响应式布局、JQuery Mobile,Windows Azure、微信核心开发)

对这个课程有兴趣的,可以联系我QQ2748165793 基础知识储备 ASP.NET MVC 5基础(6讲) 第一讲-初识ASP.NET MVC并搭建整合开发环境 第二讲-深入MVC开发模式 第三讲-C#核心语言特性 第四讲-C#核心语言特性(二) 第五讲-视图引擎Razor 第六讲-MVC核心工具 实战演练(11讲) 第七讲-体育商店(一):项目架构 第八讲-体育商店(二):数据库创建和访问 第九讲-体育商店(三):分页和样式 第十讲-体育商店(四):布局和导航 第十一讲-体育商店(五):购物

雷林鹏分享:jQuery Mobile 图标

jQuery 图标 在 jQuery Mobile 中,如需为按钮添加图标,请使用 data-icon 属性: Refresh Page 提示:在或 元素中,您也可以使用 data-icon 属性. 下面我们列出了 jQuery Mobile 提供的所有可用图标: 属性值描述图标实例 data-icon="arrow-l"左箭头尝试一下 data-icon="arrow-r"右箭头尝试一下 data-icon="arrow-u"上箭头尝试一下 d

雷林鹏分享:jQuery Mobile 事件

jQuery Mobile 事件参考手册 以下列表为所有的 jQuery Mobile 事件. 注意:请使用 on() 方法绑定事件. 事件描述 hashchange启用可标记 #hash 历史,哈希值会在一次独立的点击时发生时变化,比如一个用户点击后退按钮,会通过 hashchange事件进行处理. navigate 包裹了 hashchange 和 popstate 的事件 orientationchange方向改变事件,在用户垂直或者水平旋转移动设备时触发. pagebeforechang

Jquery mobile 新手问题总汇

http://www.wglong.com/main/artical!details?id=4#q9 2013-04-22 / 分类:JqueryMobile / 标签:JqueryMobile,Jqm,jquerymobile教程,jqm教程 此文章将会持续更新,主要收录一些新手比较常见的问题. 欢迎 向我推荐比较典型的常见问题,我会记录并整理进文章,方便自己更方便大家. 文章导读: 1.页面缩放显示问题 2.页面跳转后样式丢失js失效 3.跳转时重复调用pageinit方法的解决办法 4.如