做了个demo发现如果一个div不加border属性,用对象的offsetWidth属性来控制width没问题,但是如果一旦加了border属性,问题就来了。
其实offsetWidth属性获取的的是div内容宽度加内外边距和边框的宽度总和,所以为了更好地解决这个bug,自己弄了一个getStyle方法来有效的解决这个bug。以下是代码:
<!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>
本文探讨了在使用offsetWidth属性控制div宽度时遇到的问题,特别是当div具有边框属性时。通过创建自定义getStyle方法,有效解决了由offsetWidth属性包含边框导致的宽度计算错误。示例代码展示了如何动态调整div宽度。
1179

被折叠的 条评论
为什么被折叠?



