MooTools1.4源码分析- Fx.CSS
本文参考了我佛山人的Mootools1.2的源码分析二十九 -- Fx.CSS
/*
---
name: Fx.CSS
description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
license: MIT-style license.
requires: [Fx, Element.Style]
provides: Fx.CSS
源码分析: 苦苦的苦瓜(http://hmking.blog.51cto.com)
...
*/
/**
* @Fx.CSS: 跟CSS有关的动画的基类,这里的动画,主要是从一个开始值到结束值的变化效果
**/
Fx.CSS = new Class({
// 继承自Fx
Extends: Fx,
// prepares the base from/to object
/**
* @method: prepare
* @param element - (object) 特效作用的元素对象
* @param property - (string) CSS属性
* @param values - (mixed) 包含开始值和结束值的数组或一个单值(结束值)
* @returns: (object) - 包含from和to两个键值的对象字面量
* @description: 动画的开始和结束值的前期处理
* @notes: 此时from和to两个键的值为数组类型
**/
prepare: function (element, property, values) {
// 把变量values数组化,因为values可能传一个单值,也可能是一个数组
values = Array.from(values);
// 取特效的起始值和结束值,如果如果只传了一个值,则本值将作为结束值,CSS属性的当前值为特效起始值
if (values[1] == null) {
values[1] = values[0];
values[0] = element.getStyle(property);
}
// 将数组中的项使用parse方法解释
var parsed = values.map(this.parse);
// 返回from和to两个键值的对象字面量
return { from: parsed[0], to: parsed[1] };
},
//parses a value into an array
/**
* @method: parse
* @param value - (mixed) CSS属性值
* @returns: (array) - 数组项值为包含value和parser两个键值的对象字面量,存储解释过的CSS属性值和包含针对此属性值的解释器
* @description: 解析一个CSS属性值为一个数组
**/
parse: function (value) {
// 使用lambad表达式,将value函数化之后再执行,这样的好处是使传的值可以是function,也可以是固定值
value = Function.from(value)();
// 数组化,如果是字符串类型,使用空格分隔成数组
value = (typeof value == 'string') ? value.split(' ') : Array.from(value);
// 对数组逐项处理
return value.map(function (val) {
// 转为字符类型
val = String(val);
var found = false;
Object.each(Fx.CSS.Parsers, function (parser, key) {
&
- 发表评论
-
- 最新评论 更多>>