js中的缩放,求解析整体

var imgs = document.getElementsByClassName("i");
//利用for循环,对图片绑定鼠标事件mouseover和mouseout
for (var i = 0; i < imgs.length; i++) {
imgs[i].onmouseover = function () {
startMov(this, { width: 150, height: 200, top: 0, left: 0 });
}

imgs[i].onmouseout = function () {
    startMov(this, { width: 200, height: 450, top: -16, left: -150 });
}
//设置图像计时器为空值
imgs[i].timer = null;

}
//定义startMov()函数,element为图片对象,styles为动画对象的样式属性
function startMov(element, styles) {
clearInterval(element.timer); //执行动画之前清除动画
//setInterval()函数以给定的时间间隔重复执行一个函数
element.timer = setInterval(function () {
//for in循环语句循环遍历对象的属性,attr为属性名
for (var attr in styles) {
var icur = 0;
if (attr == 'width') {
//round()把对象四舍五入为最接近的整数
icur = Math.round(parseFloat(getStyle(element, attr)) * 100);
} else {
//parseInt()函数可解析一个字符串,并返回一个整数
icur = parseInt(getStyle(element, attr));
}

        //设置运动速度
        var speed = 0;
        speed = (styles[attr] - icur) / 8;
        //ceil(),floor()分别为Math的上舍入和下舍入函数
        speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
        if (attr == 'width') {
            element.style.width = (icur + speed) / 100;
        } else {
            element.style[attr] = icur + speed + 'px';
        }
    }
}, 30);

}
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr]; //仅限IE兼容
} else {
return getComputedStyle(obj, false)[attr]; //兼容FF
}
}