为了账号安全,请及时绑定邮箱和手机立即绑定

为什么div.style.width=div.offsetWidth-1+"px"会使div宽度变宽而不是变窄?

为什么div.style.width=div.offsetWidth-1+"px"会使div宽度变宽而不是变窄?对4-2获取样式中的例子?但还不是很理解为什么会这样??求大神些解释下,谢谢!

<!DOCTYPE HTML>
<html lang="en/zh">
<head>
<meta charset="UTF-8">
<title>4-2获取样式</title>
<style type="text/css">
*{
margin:0px;
padding: 0px;
}
#div1{
width: 200px;
height: 200px;
background-color: red;
border: 1px solid red;/*加上border会引起不减反增的现象*/
}
</style>
<!-- javascript -->
<script type="text/javascript">
window.onload=function(){
var div1=document.getElementById("div1");
div1.onmouseover=function(){
move();
}
}

/*动画函数*/
function move(){
var div1=document.getElementById("div1");
setInterval(function(){
div1.style.width=div1.offsetWidth-1+"px";/*给div加上border之后,本应该使div1.style.width变窄,为什么反而增宽了???*/
},30);

}
</script>
</head>
<body>
<div id="div1"></div>
</body>
</html>


正在回答

1 回答

嗯 这个问题。首先 加了border之后,上下左右  你加的border是1px  也就是 上面1px 右边1px 下面1px 左边1px 

那么 就等于 水平方向上多出了2px 的宽度。 对吧?

那么offsetWidth = 202px;对吧,

div.width = 200px 对吧,

202-1 =201 把这个201赋值给 div.width 不就比原来的多1了吗。

再下一次间歇调用。 offsetWidth = 201+ 2px的border值哦。  

div.width = 203 -1 =202px  

依次这样 就是递增的原因

2 回复 有任何疑惑可以回复我~
#1

记得喝水 提问者

非常感谢!讲的很仔细啊,:)
2015-12-06 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么div.style.width=div.offsetWidth-1+"px"会使div宽度变宽而不是变窄?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信