实现上下动画的方法
在开发中实现上下动画十分常见,需要控制元素的height值通过不断修改该值,才能实现动画效果,这里需要用到定时器。定时器分为两种,一种是重复不断的定时器setInterval(fn,time),另一种是延时只在设定时间后只出现一次的定时器setTimeout(fn,time)。在经历所有的传进的每一个值,都要用到一个boolean来控制是否完成解析,解析成功则返回true,结束定时器,返回false,直到返回true位置。

实现上下动画代码
如下是实现上下动画的完美运动js插件代码,该插件能根据传进来的值进行匹配,不仅有理想运动效果,且运行逻辑也非常合理。
function getStyle(obj, attr) {
if (obj.currentStyle) {
return obj.currentStyle[attr];
} else {
return getComputedStyle(obj, false)[attr];
}
}
function startMove(obj, json, fnEnd) {
if (obj.timer) {
clearInterval(obj.timer);
};
obj.timer = setInterval(function() {
var bStop = true; //假设全部找到
for (var attr in json) {
var icurr = 0;
if (attr == 'opacity') { //匹配key
icurr = Math.round(parseFloat(getStyle(obj, attr)) * 100); //获取元素的属性值
} else {
icurr = parseInt(getStyle(obj, attr));
};
var sPeed = (json[attr] - icurr) / 8;
sPeed = sPeed > 0 ? Math.ceil(sPeed) : Math.floor(sPeed);
if (attr == 'opacity') {
obj.style.filter = "alpha(opacity:" + (icurr + sPeed) + ")";
obj.style.opacity = (icurr + sPeed) / 100;
} else {
obj.style[attr] = icurr + sPeed + 'px';
}
if (icurr != json[attr]) {
bStop = false;
}
}
if (bStop) {
clearInterval(obj.timer);
if (fnEnd) {
fnEnd();
}
}
}, 30);
}
用户只需要传入需要动画的元素、目标属性值、以及完成动画后的回调函数,即可以实现理想的动画效果。
原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7372.html
