运动多样式框架

在这里插入图片描述

var oDiv1 = document.getElementById("div1");
            /*
              宽高透明度同时发生变化
            */
            oDiv1.onmouseover = function(){
                starMove(this,{
                    width:300,
                    height:102,
                    opacity:30
                },function(){
                    alert("over");
                });

            }
            oDiv1.onmouseout = function(){
                starMove(this,{
                    width:100,
                    height:100,
                    opacity:100
                })

            }
            /*
              回调函数:我们把函数当作参数传入,并且在合适调用的方式,叫做回调函数,在别的编程语言叫做(c语言、c++)叫做函数指针

              问题:其中有一个动画到达目的值,就把定时器关闭了。
              解决:当所有的动画到达目的值,才能关闭定时器
            */
            

            //样式框架
            function starMove(node,cssObj,complete){
                clearInterval(node.timer);
                node.timer = setInterval(function(){
                    var isEnd = true;//假设所有的动画都达到目的值了
                    for(var attr in cssObj)
                    {
                        var iTarget = cssObj[attr];
                        //计算速度
                    if(attr=="opacity"){
                        iCur = parseInt(parseFloat(getStyle(node,"opacity"))*100);
                    }else{
                        iCur = parseInt(getStyle(node,attr));
                    }
                    var speed = (iTarget - iCur) / 8;
                    speed = speed > 0 ? Math.ceil(speed) : Math.floor(speed);
                    
                    if(attr=="opacity"){
                        iCur += speed;
                        node.style.opacity = iCur / 100;
                        node.style.filter = "alpha(opacity=" + iCur +")"
                    }else{
                    node.style[attr] = iCur + speed + "px";
                    }

                    if(iCur != iTarget){
                        isEnd = false;
                    }

                    }
                    if(isEnd){
                        clearInterval(node.timer);
                        if(complete){
                            complete.call(node);
                        }
                    }
                    
                    
                },30);

            }
            //获取当前有效样式浏览器兼容写法
            function getStyle(node,cssStr){
                return node.currentStyle ? node.currentStyle[cssStr]:getComputedStyle(node)[cssStr];
            }
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值