MooTools1.4源码分析- Fx.Tween
Mootools1.4 - Fx.Tween类的源码分析,如果理解有误欢迎指正:
/*
---
name: Fx.Tween
description: Formerly Fx.Style, effect to transition any CSS property for an element.
license: MIT-style license.
requires: Fx.CSS
provides: [Fx.Tween, Element.fade, Element.highlight]
源码分析: 苦苦的苦瓜(http://hmking.blog.51cto.com)
...
*/
// #region - Fx.Tween -
/**
* @Fx.Tween: 对元素单个样式属性执行一个特效
**/
Fx.Tween = new Class({
// 继承自Fx.CSS
Extends: Fx.CSS,
/**
* @method: initialize
* @param element - (mixed) 元素的id或引用
* @param options - (object, 可选) 类可用的所有可选项, 以及如下的可选项:
* property - (string, 默认为null) 变换的目标CSS属性,例如:'width', 'color', 'font-size', 'border'等.
* 如果在此省略该可选项, 则在执行start或set方法时,需要在方法的第一个参数上指定一个CSS属性.
* @description: 构造函数,提供将元素的一个CSS属性值从一个值向另一个值进行转化的功能
* @notes:
* 任何可以用Element:setStyle设置的CSS属性都可以用于Fx.Tween
* 如果不是可计算型的CSS属性, 如border-style 或 background-image等, 则只是简单的设置它的值
* 如果使用了property可选项, 则在调用start和set方法时就不用再指定CSS属性
**/
initialize: function (element, options) {
// element属性存储特效所作用的元素对象
this.element = this.subject = document.id(element);
// 调用父类的同名方法
this.parent(options);
},
/**
* @method: set
* @param property - (string) css属性(如果在构造函数中设置了property可选项, 则该处可以省略)
* @param now - (mixed) css属性值
* @description: 将元素的指定CSS属性值立即设置为指定的值
* @returns: (object) 主调Fx.Tween实例
* @notes:
* 如果使用了property可选项, 或者在start方法中指定了CSS属性参数,则在调用set方法时就不用指定CSS属性参数
**/
set: function (property, now) {
// 如果只提供一个参数
if (arguments.length == 1) {
// 将此参数作为目标值
now = property;
// 取CSS属性,首先取Fx实例的property属性存储的CSS属性名
property = this.property || this.options.property;
}
// 最终渲染效果
this.render(this.element, property, now, this.options.unit);
- 发表评论
-
- 最新评论 更多>>