作了个demo发现若是一个div不加border属性,用对象的offsetWidth属性来控制width没问题,可是若是一旦加了border属性,问题就来了。javascript
其实offsetWidth属性获取的的是div内容宽度加内外边距和边框的宽度总和,因此为了更好地解决这个bug,本身弄了一个getStyle方法来有效的解决这个bug。如下是代码:css
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>test</title> </head> <style type="text/css"> div{width: 200px;height: 200px;background: red;border: 2px solid blue;} </style> <script type="text/javascript"> window.onload = function() { var oDiv = document.getElementsByTagName("div")[0]; startMove(); function startMove() { setInterval(function() { oDiv.style.width = parseInt(getStyle(oDiv,"width"))-1+"px"; },30); } function getStyle(obj,attr) { if (obj.currentStyle){ return obj.currentStyle[attr]; }else{ return getComputedStyle(obj,false)[attr]; } } } </script> <body> <div></div> </body> </html>