`
墨日
  • 浏览: 19103 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论

JQuery Mobile转场分析

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


JQM的转场实际上利用的全部是CSS,只是简单的一个addClass 和removeClass.下面是带动画转场的函数
function css3TransitionHandler( name, reverse, $to, $from ) {

	var deferred = new $.Deferred(),
		reverseClass = reverse ? " reverse" : "",
		viewportClass = "ui-mobile-viewport-transitioning viewport-" + name,
		doneFunc = function() {

			$to.add( $from ).removeClass( "out in reverse " + name );

			if ( $from && $from[ 0 ] !== $to[ 0 ] ) {
				$from.removeClass( $.mobile.activePageClass );
			}

			$to.parent().removeClass( viewportClass );

			deferred.resolve( name, reverse, $to, $from );
		};

	$to.animationComplete( doneFunc );

	$to.parent().addClass( viewportClass );

	if ( $from ) {
		$from.addClass( name + " out" + reverseClass );
	}
	$to.addClass( $.mobile.activePageClass + " " + name + " in" + reverseClass );

	return deferred.promise();
}


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

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

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


接下来看看CSS部分,其实所有的东西都可以用一个transform(至于transform这里也不做解释)搞定,以slide为例
.slide.out {
	-webkit-transform: translateX(-100%);
	-webkit-animation-name: slideouttoleft;
}

.slide.in {
	-webkit-transform: translateX(0);
	-webkit-animation-name: slideinfromright;
}

.slide.out.reverse {
	-webkit-transform: translateX(100%);
	-webkit-animation-name: slideouttoright;
}

.slide.in.reverse {
	-webkit-transform: translateX(0);
	-webkit-animation-name: slideinfromleft;
}


实际上就是通过-webkit-animation-name指定了一组动画效果
@-webkit-keyframes slideinfromright {
    from { -webkit-transform: translateX(100%); }
    to { -webkit-transform: translateX(0); }
}

@-webkit-keyframes slideinfromleft {
    from { -webkit-transform: translateX(-100%); }
    to { -webkit-transform: translateX(0); }
}

@-webkit-keyframes slideouttoleft {
    from { -webkit-transform: translateX(0); }
    to { -webkit-transform: translateX(-100%); }
}

@-webkit-keyframes slideouttoright {
    from { -webkit-transform: translateX(0); }
    to { -webkit-transform: translateX(100%); }
}


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




另外关于JQM转场闪屏的问题,其实可以通过下面的样式修正
.ui-page {
	backface-visibility: hidden;
	-webkit-backface-visibility: hidden; /* Chrome and Safari */
	-moz-backface-visibility: hidden; /* Firefox */
}


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


PS:如果需要更改动画速度,只需要更改下面的-webkit-animation-duration即可
.in, .out {
	-webkit-animation-timing-function: ease-in-out;
	-webkit-animation-duration: 350ms;
}
分享到:
评论
1 楼 crazybullet 2012-08-22  

/* View - Slide Horizontal Transition */
/* XXX hack: the width is adjusted (0-100%) with a delayed transition in order
*           to hide the horizontal scrollbar on the device (at least, when the
*           transition is over).
* This is just a workaround: the platform bug should be fixed later.  */
.view {
  -moz-transition: -moz-transform 0.5s ease, width 0s linear 0.5s;
  -moz-transform: translateX(100%);
  width: 0;
}


这段代码中的各个参数怎么解释,还有就是.view之后为什么不像您举的例子中那样加in或者out……求大神指点,诚待回复!

相关推荐

    JqueryMobile1.4.2最新版Demo

    在下载的 "JqueryMobile-1.4.2 Demo" 压缩包中,你可以找到各种示例页面和组件的实践应用,通过查看和分析这些例子,可以更直观地了解 jQuery Mobile 的功能和使用方法。结合实际项目需求,灵活运用这些知识,可以...

    JQUERYMOBILE 提示框

    **jQuery Mobile 提示框详解** 在移动应用开发中,用户界面的交互性和反馈至关重要,而提示框(对话框)正是实现这一目标的关键组件。jQuery Mobile,作为一款强大的前端框架,为开发者提供了简单易用的提示框功能...

    jQuery mobile图画板

    《jQuery Mobile 图画板详解与应用实践》 在数字化时代,网页交互的丰富性和多样性日益增强,其中,图画板功能成为许多应用场景中的重要元素。jQuery Mobile,作为一个强大的移动Web开发框架,提供了丰富的组件和...

    jQuery_Mobile_教程集合

    它非常适合创建跨平台的移动应用,支持触摸优化的UI组件,以及基于Ajax的导航系统,可以实现页面之间的动画转场效果。 在开始学习jQuery Mobile之前,我们需要了解一些基础知识和准备工作。首先,jQuery Mobile需要...

    jQuery Mobile权威指南

    导航模型则允许开发者创建页面间的转场效果,这在移动应用中是非常重要的一部分。按钮和表单元素则需要特别注意,因为它们在移动设备上会有不同的交互方式。 除了这些基础概念,jQuery Mobile 还提供了一系列预定义...

    jquerymobile中文文档

    **jQuery Mobile 中文文档概述** jQuery Mobile 是一个用于构建响应式和触摸友好的网页应用的框架,它基于 jQuery 库,特别适合开发跨平台的移动Web应用。这个框架旨在简化移动设备上的网页开发,提供一套统一的...

    jQuery Mobile 实现移动客户端多级下拉导航菜单

    jQuery Mobile 是一个专为触摸设备设计的前端框架,它提供了一系列的组件和工具,帮助开发者构建响应式、易用的移动应用。在这个场景中,我们将深入探讨如何使用jQuery Mobile实现移动客户端的多级下拉导航菜单。 ...

    jQuery Mobile权威指南.pdf )

    根据提供的信息,我们可以推断出该文档主要关注的是jQuery Mobile技术。尽管提供的部分内容与jQuery Mobile无关,主要提及了Linux公社网站及其对Linux系统的报道,但本篇内容将围绕jQuery Mobile展开,提供详尽的...

    jQuery移动开发(jQuery.Mobile)

    ### jQuery移动开发(jQuery Mobile) #### 一、概述 **jQuery Mobile** 是一款基于 jQuery 的开源框架,专门用于创建响应式、触摸友好的移动 Web 应用程序。它支持多种移动设备和平板电脑,并能够优雅地降级为...

    jquery mobile

    - 转场效果:支持页面切换时的动画效果,增强了应用的视觉吸引力。 - 兼容性:遵循W3C标准,保证了较好的浏览器兼容性。 - 可访问性:支持键盘导航,并有良好的屏幕阅读器支持,使移动应用对残障人士更加友好。 ...

    jQueryMobile - DateBox插件(模式篇)

    《jQuery Mobile - DateBox 插件(模式篇)》 jQuery Mobile 是一款强大的移动Web开发框架,它使得在智能手机和平板设备上构建交互式的、触摸优化的网页应用变得容易。DateBox 是一个针对jQuery Mobile的扩展插件,...

    [jQuery移动开发].(jQuery.Mobile).Jon.Reid.文字版

    ### 关于《jQuery移动开发》(jQuery Mobile)— Jon Reid #### 一、概述与简介 本书《jQuery移动开发》由Jon Reid编写,是针对移动Web应用开发的专业指南。本书全面介绍了如何使用jQuery Mobile框架来构建高效且...

    jquery-mobile-3d-image.zip

    《jQuery Mobile 3D 图像应用深度解析》 在当今的Web开发领域,jQuery Mobile作为一个强大的框架,为创建响应式、触控友好的移动应用程序提供了便利。本篇将深入探讨如何利用jQuery Mobile实现3D图像效果,以提升...

    手机网页wap用Bootstrap还是jQuery Mobile

    而Bootstrap和jQuery Mobile是两种广泛使用的技术框架,它们在移动网页开发中扮演了重要的角色。下面我们将从框架解决问题的能力、功能特点以及适用场景这三个方面来对比这两个框架。 Bootstrap是一个CSS框架,它...

    jQuery mobile转换url地址及获取url中目录部分的方法

    在本文中,我们将深入探讨jQuery Mobile中的两个关键函数:`jQuery.mobile.path.makeUrlAbsolute()` 和 `jQuery.mobile.path.get()`,它们主要用于处理和解析URL。这两个函数对于开发移动应用或者任何需要处理URL...

    demos.jquerymobile.com:jQuery Mobile演示站点

    `demos.jquerymobile.com` 是一个专门展示 `jQuery Mobile` 库功能和用法的在线平台。这个站点包含了各种各样的示例,帮助开发者理解和学习如何在移动设备上构建响应式、触摸友好的网页应用。作为 `HTML` 的一部分,...

Global site tag (gtag.js) - Google Analytics