javascript 为什么在运动框架中不能实现borderWidth的变化,我的代码如下请指教:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
<title>边框运动</title>
<style>
div{width:100px; height:100px; margin:20px; float:left; background:yellow; border:2px solid green;
    filter:alpha(opacity=30);  
      opacity:0.3;  
}
</style>
<script>
function getStyle(obj,name){
    if(obj.currentStyle){
        return obj.currentStyle[name]}else{
            return getComputedStyle(obj,false)[name];
            }    
    
    }
window.onload=function(){
    var aDiv1=document.getElementById('div1');    
 ;    
 var oTxt=document.getElementById('txt');
aDiv1.onmouseover=function(){
    startMove(this,'borderWidth',100);
    }
aDiv1.onmouseout=function(){
    startMove(this,'borderWidth',30);
    }
/*aDiv1.onmouseover=function(){    
    startMove(this,'width',400);
    }
aDiv1.onmouseout=function(){
    startMove(this,'width',100);
    }*/    

}    

function startMove(obj,attr,iTarget){
    
    clearInterval(obj.timer);
    obj.timer=setInterval(function(){
                var cur=parseInt(getStyle(obj,attr))
        if(attr=='opacity'){
            cur=parseFloat(getStyle(obj,attr))*100;
            }else{
                cur=parseInt(getStyle(obj,attr));
                
                }

        var speed=(iTarget-cur)/4;
        speed=speed>0?Math.ceil(speed):Math.floor(speed);    
if(cur==iTarget){
    clearInterval(obj.timer);}
    else{
        if(attr=='opacity'){
        obj.style.filter='alpha(opacity:'+cur+speed+')';
        obj.style.opacity=(cur+speed)/100;    
        var oTxt=document.getElementById('txt');
        oTxt.value=    obj.style.opacity;
        
        
            }else{
    obj.style[attr]=cur+speed+'px';
    var oTxt=document.getElementById('txt');
    oTxt.value=    cur+speed;}
        }        
        },30)    
    }



</script>

</head>

<body>
<input id='txt' type="text" />
<div id='div1'>边框运动</div>
</body>
</html>

慕虎5948952
浏览 1318回答 1
1回答

stone310

代码在chrome和IE下可以正常执行的,火狐由于不支持borderWidth这么写,要求更严谨的写法:border-left-width ,border-top-width ,border-right-width , border-bottom-width,所以先建议你把运动框架改成完美运动框架(就是将attr和iTarget两个参数,变成json模式),具体可找找教程,网上很多,慕课应该也有然后再写边框运动就写上面4个属性都变化(所有浏览器都能兼容)以后就记得了,写边框运动比较麻烦点
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript