作了個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>