`
nuysoft
  • 浏览: 520960 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
91bd5d30-bd1e-3b00-9210-87db1cca0016
jQuery技术内幕
浏览量:200705
社区版块
存档分类
最新评论

[原创] jQuery源码分析-16动画分析和扩展 Effects

阅读更多

 

16. 动画

 

16.1 源码解析

 

jquery1.43源码分析之动画部分 http://www.iteye.com/topic/786984

上边这篇文章分析的很透彻,由浅入深,我就不再重复了,下面附两张jQuery 1.6.1的程序执行流程图:

 



 

 

16.2 动画支持的属性

jQuery仅支持数值型的属性和特殊标记show/hide/toggle,非数值型的属性需要插件支持。

 

16.3 动画算法 jQuery.easing

 

jQuery自带了线性动画linear、余弦动画swing,下边是源码分析:

/**

* 如果要扩展动画效果,则扩展这个属性jQuery.easing

 */

easing: {

    /**

     * 线性

     * p 完成时间百分比

     * n 已执行时间

     * firstNum 0 起始偏移百分比

     * diff 1 结束偏移百分比

     * 通常情况下,等于直接返回p

     * 动画效果:匀速运动

     */

    linear: function( p, n, firstNum, diff ) {

       return firstNum + diff * p;

    },

    /**

     * http://baike.baidu.com/view/303443.htm

     * 余弦

     * -Math.cos(p*Math.PI) -1~1

     * ( ( -Math.cos(p*Math.PI)/2 ) + 0.5 ) 0~1

     * 根据余弦图,最终的动画效果是:慢>>

     */

    swing: function( p, n, firstNum, diff ) {

       return ( ( -Math.cos(p*Math.PI)/2 ) + 0.5 ) * diff + firstNum;

    }

}

 

 

16.4 扩展

 

从上面的图(定时器timerId)可以看到,动画的执行进度用执行时间衡量,再由jQuery.easing转换为带特效的进度,最后实际执行样式更新的是jQuery.fx.step,jQuery.easing并不涉及具体的样式值,jQuery的这种低耦合的架构使得无论是扩展属性还是扩展动画,都变得非常方便。

 

1. 扩展支持动画的属性 jQuery.fx.step,jQuery自带opacity _default;

 

? 颜色 color

颜色的表示方法有rgb(num, num, num)、#RRGGBB、#RGB等,例如rgb(12, 23, 45)、#123456、#123,要产生颜色动画的关键在于,将颜色值转换为可变化的数值型,作为起始值和结束值。

? rgb(num, num, num) 用正则解析其中3个num,放进一个数组中;这样开始值和结束值都变为包含了三个整型元素的数组,step调用时分别计算3个整型元素的当前值,再拼装成颜色值,更新样值就可以实现颜色动画。

? # RRGGBB 是24位色,由6个十六进制数组成,可以分为三部分,第一部分代表红色,第二部分绿色,最后是蓝色,将三部分分别解析成整型,其余部分同rgb(num, num, num)

? #RGB 是# RRGGBB的简写,解析时将每一位重复一次,其余部分同# RRGGBB

 

? 旋转 rotate

旋转的效果很酷,配合精美的图片可以做出很玄的网页。旋转的实现关键是兼容IE和非IE,有两种实现方式:使用浏览器自定义接口和canvas标记,因为canvas标记在IE9以下的版本中不支持,需要额外的插件支持,单独再讲,这里先介绍下浏览器自定义接口实现:

? IE: matirx滤镜 

? webkit: elemstyle.webkitTransform = 'rotate(45deg)'

? Opera: Otransform = 'rotate(45deg)'

? firefox: MozTransform = 'rotate(45deg)'

 

2. 扩展动画算法 jQuery.easing,jQuery自带linear swing

 

从上边的jQuery.easing 源码分析可以看到,最关键的参数是p,表示已执行时间的百分比,jQueryUI扩展的动画算法以p为输入,经过不同的公式,输出一个具有动画效果的新的进度,这个进度乘以结束值减去开始值的差值,就是当前值。

 

jQueryUI扩展的动画算法 http://jqueryui.com/demos/effect/easing.html


  • 大小: 51 KB
  • 大小: 65.1 KB
1
0
分享到:
评论

相关推荐

    jQuery源码分析系列.pdf

    - **动画分析和扩展Effects**:研究jQuery中动画实现的底层逻辑,以及如何通过扩展方法来添加自定义动画效果。 #### 七、尺寸和位置 - **Dimensions & Offset**:解析jQuery如何计算和操作元素的尺寸、位置和偏移...

    jQuery源码分析(1.7)

    ### jQuery源码分析关键知识点详解 #### 一、前言 在深入了解jQuery源码之前,有必要先简要介绍一下jQuery的基本情况及其对JavaScript编程领域的重要意义。jQuery作为一个轻量级、功能丰富的JavaScript库,在Web...

    jquery api, jquery ui api, jquery源码分析

    深入理解jQuery源码有助于开发者更好地利用其API并优化性能。主要关注点包括: 1. **选择器引擎(Sizzle)**:jQuery 使用Sizzle作为其选择器引擎,它是如何快速高效地解析CSS选择器并找到匹配元素的。 2. **链式...

    jquery-ui-1.7.3.custom

    5. **效果(Effects)**:jQuery UI提供了丰富的动画效果,如淡入淡出、滑动等,可以轻松实现元素的过渡和变换。 三、自定义版本 `jquery-ui-1.7.3.custom`表示这是一个根据项目需求定制的版本,只包含了所需的特定...

    jQuery源码分析系列

    jQuery源码分析系列涉及了对jQuery库内部实现的详细解读,jQuery作为前端开发中最常用的JavaScript库之一,它简化了DOM操作、事件处理、动画效果和AJAX交互等操作。通过深入分析jQuery的源码,开发者可以学习到先进...

    Jquery源码分析

    总的来说,jQuery源码分析是一场深入JavaScript世界的技术探索,它揭示了库背后的智慧和技巧,为开发者提供了宝贵的实践经验和理论基础。无论你是初学者还是经验丰富的开发者,都应该尝试去了解并掌握这个强大的工具...

    jQuery源码分析系列_1.6

    ### jQuery源码分析系列_1.6 #### 一、前言 在现代Web开发领域,jQuery无疑是一款具有里程碑意义的JavaScript库。它通过简洁、强大的API极大地简化了DOM操作、事件处理、Ajax交互以及动画等功能,使得前端开发变得...

    带锋利的JQuery第二版的源码

    这本书旨在帮助开发者理解和掌握jQuery的精髓,通过源码分析,我们可以更直观地看到jQuery是如何高效地处理DOM操作、事件处理、动画效果以及Ajax请求的。 jQuery是一个广泛使用的JavaScript库,它的主要目标是简化...

    jquery_sourceCode_analysis:jQuery原始解析-源码解析

    《jQuery源码解析:深入理解系统开源的魅力》 jQuery,这个JavaScript库自2006年发布以来,就以其简洁的API和强大的功能赢得了开发者们的广泛喜爱。它极大地简化了DOM操作、事件处理、动画效果以及Ajax交互,使得...

    《锋利的JQuery》实例源码

    《锋利的jQuery》是一本深入讲解jQuery技术的书籍,其附带的实例源码是学习和理解jQuery核心概念及实际应用的重要参考资料。这个压缩包包含的文件是书中的各个章节实例的源代码,总共涵盖了8个章节的内容,未包括...

    《锋利的jQuery》书中全部源码

    通过分析《锋利的jQuery》的源码,读者可以学习到这些概念的实际应用,以及jQuery是如何优化和封装JavaScript代码的。例如,书中可能展示了如何使用选择器选取特定元素,然后使用链式操作改变其样式,添加事件监听,...

    Jquery UI

    4. **特效(Effects)**: jQuery UI 提供了一系列动画效果,如淡入淡出、滑动、切换等,可以轻松地应用到元素上,增强用户体验。 5. **Positioning**: jQuery UI 的`position`方法用于精确控制元素的位置,可以基于...

    jquery1.4.2 js文件及chm文档

    4. **源码分析** - 分析 jQuery 1.4.2 的源码可以帮助我们理解其内部机制,如事件绑定的实现、选择器的解析过程等。这对于提升 JavaScript 技能和扩展自定义功能非常有帮助。 5. **实际应用示例** - 使用 jQuery ...

    jquery

    - **动画(Animation)**:jQuery的动画效果强大,如`fadeIn()`, `fadeOut()`, `slideToggle()`等,可以轻松实现各种过渡和动画效果。`animate()`方法则允许自定义复杂的动画效果。 - **Ajax(Ajax Interactions)*...

    锋利的jQuery源代码

    通过深入学习和分析jQuery源码,开发者不仅可以提升JavaScript编程技能,还能借鉴jQuery的设计思想,应用于自己的项目中,提高代码质量和可维护性。 总之,《锋利的jQuery源代码》是一份宝贵的资料,对于想要深入...

    《锋利的jQuery》高清PDF目录完整版带源码.rar

    通过分析和实践这些源码,读者能够更好地理解和掌握jQuery的用法,提升实战技能。 总之,《锋利的jQuery》这本书是jQuery初学者和进阶者的一本宝贵教材,结合实例源码,读者可以深入理解jQuery的工作原理,并能将其...

    mootools源码分析

    5. ** Effects模块**:MooTools的Effects模块提供了丰富的动画效果,如淡入淡出、滑动、缩放等,同时支持链式调用,方便组合多种效果。 6. **Selectors**:MooTools实现了类似jQuery的选择器引擎,支持CSS选择器...

    LearningJQuery源码

    在这个压缩包中,包含的文件为我们提供了深入学习和研究jQuery源码的机会。 首先,我们要明白jQuery的核心目标是提供一个简洁的API,以方便开发者处理DOM操作。"记忆法大全(免费代理).html"可能是讲解如何利用...

    simple-jQuery:封装简单版的jQu​​ery,替代初学者对jQuery源码研究的入门参考

    通过分析"simple-jQuery-master"中的代码,初学者可以理解jQuery的基本架构,学习到如何组织JavaScript代码以实现类似的功能,并且逐步深入到源码分析,提高JavaScript编程技能。 **学习和使用建议** 1. **阅读...

    jquery:jquery原始码学习

    本文将围绕“jQuery源码学习”这一主题,详细探讨jQuery的核心概念和实现机制。 首先,jQuery的设计理念是“Write Less, Do More”,它通过封装常见的DOM操作、事件处理、动画效果等,使得JavaScript编程更加高效。...

Global site tag (gtag.js) - Google Analytics