无敌忍者
2016-09-12 22:44
window.onload = function() {
var Li = document.getElementById('li1');
Li.onmouseover = function() {
startMove(Li, 'width', 400, function() {
startMove(Li, 'height', 200, function() {
startMove(Li, 'opacity', 100);
});
});
}
Li.onmouseout = function() {
startMove(Li, 'opacity', 30, function() {
startMove(Li, 'height', 100, function() {
startMove(Li, 'width', 200);
});
});
}
}
move.js
function startMove(obj, attr, target, fn) {
clearInterval(obj.timer);
obj.timer = setInterval(function() {
//获取当前的值
var icur = 0;
if(attr == 'opacity') {
icur = Math.round(parseFloat(getStyle(obj, attr)) * 100);
} else {
icur = parseInt(getStyle(obj, attr));
}
//2算速度
var speed = (target - icur) / 8;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
//3检测停止
if(icur == target) {
clearInterval(obj.timer);
if(fn) {
fn();
}
} else {
if(attr == 'opacity') {
obj.style.filter = 'alpha(opacity:' + icur + speed+ ')'; //IE
obj.style.opacity = (icur + speed) / 100;
} else {
obj.style[attr] = icur + speed + 'px';
}
}
}, 30);
}
function getStyle(obj, attr) {
if(obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, false)[attr];
}
}
window.onload =function(){ var Li=document.getElementById('li1'); Li.onmouseover = function(){ startMove(Li,'width',400,function(){ startMove(Li,'height',200); }); }
有可能是浏览器的问题,你把代码复制到慕课网写代码的地方,测试一下,如果可以,那就是浏览器的问题了。
因为我的代码也有问题,测试传入fn函数参数时,总是显示错误:参数后面少")"。拿到慕课网测试,又可以传入函数参数。至于具体神马问题,憋问我,目前我也不知道,望有学霸解答一下。
我把你的代码拷下来运行可以链式运动啊,你是不是HTML顺序没写对?要这样写
先引move.js再window.onload
JS动画效果
113925 学习 · 1443 问题
相似问题