/**
* 运动函数简单封装
* @param obj 要操作的对象
* @param json 存放要改变的属性和目标值
* @param fn 回调函数,在前面的运动效果执行完之后,才回执行的函数
*/
function motion(obj, json,fn) {
clearInterval(obj.timer);
obj.timer = setInterval(function () {
// 当开关变量结果为true时,表示所有动作执行完毕,可以停止定时器,调用回调函数了
var onOff = true;
for ( var attr in json ){
var current = null;
// 获取当前值
if (attr = "opacity") {
current = parseInt(getStyle(obj, attr)) * 100;
} else {
current = parseInt(getStyle(obj, attr));
};
// 计算速度
var speed = ( json[attr] - current ) / 7;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
// 如果目标值和当前值不相等 继续for循环
if (json[attr] != current) {
flag = false;
};
if (attr = "opacity") {
obj.style.opacity = ( current + speed ) / 100;
obj.style.filter = "alpha(opacity = " + ( current + speed ) + ")";
} else if (attr == "zIndex"){
obj.style.zIndex = json[attr];
}else {
obj.style[attr] = current + speed + "px";
};
};
// 判断开关变量的停止条件
if( onOff ){
clearInterval(obj.timer);
if (fn) {
fn();
};
};
}, 50);};
/**
* 获取非行内CSS样式
* @param obj 要获取的对象
* @param attr 要获取的属性
* @returns {Number}
*/
function getStyle(obj, attr) {
if (window.getComputedStyle) {
return window.getComputedStyle(obj.false)[attr];
} else {
return obj.currentStyle[attr];
};
};
自己封装简单的运动效果
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
- 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
- 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
- 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
推荐阅读更多精彩内容
- 【蝴蝶效应】 蝴蝶效应:上个世纪70年代,美国一个名叫洛伦兹的气象学家在解释空气系统理论时说,亚马逊雨林一只蝴蝶...
- (一) 到新公司两个多月,刚开始有点进入状态的感觉,却突然接到了一个新的通知:其中一位董事的儿子(同时也是我们的股...
- 又读一遍书。真是执念啊,从13岁到16岁,18岁,直到生命的最后,即使最后一次见时,他用钱污辱了她,她也从来没有怨...