javascript实现网页中涉及的简易运动改变宽高、透明度、位置

平时工作中写网页涉及的运动往往都非常简单,比如改变宽高,透明度,位置,是最常用的几种形式,为了省事,整合了下,于是就有了下面这个小编:

兼容:IE系列、chrome、firefox、opera、Safari、360

Move.action(dom对象,json格式属性值对,缓动参考值,回调方法)

示例:
 var box = document.getElementById('Ele');
Move.action(box,{width:500,height:200,left:200,top:100,marginLeft:10,opacity:.5},5,function(){
console.log('end');
});

*/

var Move = {

version: '1.5',//判断是否空对象
isEmptyObject: function(obj) {
for (var attr in obj) {
return false;
}
return true;
},//取CSS样式值
getStyle: function(obj,attr) {
if (obj.currentStyle) { //IE
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj,null)[attr];
}
},//运动
action: function(obj,json,sv,callback) {

_this = this;

//obj是否为空
if (_this.isEmptyObject(obj)) {
return false;
}

//运动开始
clearInterval(obj.timer);
obj.timer = setInterval(function() {
var isAllCompleted = true,//假设全部运动都完成了
speed,//速度
attrValue,//当前值
targetV; //目标值
for (attr in json) {
attrValue = _this.getStyle(obj,attr);
switch (attr) {
case 'opacity':
attrValue = Math.round((isNaN(parseFloat(attrValue)) ? 1 : parseFloat(attrValue)) 100);
speed = (json[attr]
100 - attrValue) / (sv || 4);
targetV = json[attr] * 100;
break;
default:
attrValue = isNaN(parseInt(attrValue)) ? 0 : parseInt(attrValue);
speed = (json[attr] - attrValue) / (sv || 4);
targetV = json[attr];
}

speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
//如果循环过程中存在尚未结束的运动,isAllCompleted为假
if (attrValue != targetV) {
isAllCompleted = false;
}

switch (attr) {
case 'opacity':
{
obj.style.filter = "alpha(opacity=" + (attrValue + speed) + ")";
obj.style.opacity = (attrValue + speed) / 100;
};
break;
default:
obj.style[attr] = attrValue + speed + 'px';
}
}

//所有循环结束后,只有当全部运动结束后(isAllCompleted=true)时才关闭定时器
if (isAllCompleted) {
clearInterval(obj.timer);

if (typeof callback === 'function') {
callback();
}

}
},30);
}

};

以上就是描述了javascript实现网页中涉及的简易运动的方法,希望对大家实现javascript简易运动有所启发。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


kindeditor4.x代码高亮功能默认使用的是prettify插件,prettify是Google提供的一款源代码语法高亮着色器,它提供一种简单的形式来着色HTML页面上的程序代码,实现方式如下: 首先在编辑器里面插入javascript代码: 确定后会在编辑器插入这样的代码: <pre
这一篇我将介绍如何让kindeditor4.x整合SyntaxHighlighter代码高亮,因为SyntaxHighlighter的应用非常广泛,所以将kindeditor默认的prettify替换为SyntaxHighlighter代码高亮插件 上一篇“让kindeditor显示高亮代码”中已经
js如何实现弹出form提交表单?(图文+视频)
js怎么获取复选框选中的值
js如何实现倒计时跳转页面
如何用js控制图片放大缩小
JS怎么获取当前时间戳
JS如何判断对象是否为数组
JS怎么获取图片当前宽高
JS对象如何转为json格式字符串
JS怎么获取图片原始宽高
怎么在click事件中调用多个js函数
js如何往数组中添加新元素
js如何拆分字符串
JS怎么对数组内元素进行求和
JS如何判断屏幕大小
js怎么解析json数据
js如何实时获取浏览器窗口大小
原生JS实现别踩白块小游戏(五)
原生JS实现别踩白块小游戏(一)