烟花特效

点击页面出现烟花散落颜色随机变化特效

CSS

HTML

JS
function animate( ele , attr_options , callback ){
for(var attr in attr_options){
attr_options[attr] = {
// 目标点 : 传入的数据;
target : attr === “opacity” ? attr_options[attr] * 100 : attr_options[attr],
// 元素当前的属性值 ;
iNow : attr === “opacity” ? parseInt( getComputedStyle(ele)[attr] * 100 ) : parseInt( getComputedStyle(ele)[attr])
}
}
// 关闭开启定时器;
clearInterval( ele.timer );
ele.timer = setInterval( function(){
// 1. 获取速度; width : height :
for(var attr in attr_options){
// attr : width | height;
var item = attr_options[attr];
// console.log(item , attr);
var target = item.target;
var iNow = item.iNow;
// 运动所必须的值我们都有了;
// 计算速度;
var speed = (target - iNow) / 10;
// 速度取整;
speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
// 终止条件 :
if( Math.abs( target - iNow) <= Math.abs(speed) ){
// 终止定时器 ;
// 送他一把;
// clearInterval( ele.timer );
// ele.style[attr] = target + “px”;
// 终止条件不可靠,因为目标的不一致会让运动次数执行不同,有可能提前关闭定时器;
ele.style[attr] = attr === “opacity” ? target / 100 : target + “px”;
// 一条运动完成删除对象里面的数据;
delete attr_options[attr];

            // 如果对象里面没有属性了,那么我们关闭定时器就可以了;
            for(var num in attr_options){
                // 如果attr_options里面有属性,那么此时我就不应该终止定时器;
                return false;
            }
            clearInterval(ele.timer);
            typeof callback === "function" ? callback() : "";
        }else{
            // 元素运动;
            // 因为 iNow 是一个临时变量,所以不能再去操作iNow , 要去操作iNow 的数据源;
            // 多花点经历理解这段代码;
            attr_options[attr].iNow += speed;
            ele.style[attr] = attr === "opacity" ? attr_options[attr].iNow / 100 : attr_options[attr].iNow + "px";
        }
    }
} , 30)

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值