1.
element.offsetHeight | 返回元素的高度。 |
element.offsetWidth | 返回元素的宽度。 |
element.offsetLeft | 返回元素的水平偏移位置。 |
element.offsetParent | 返回元素的偏移容器。 |
element.offsetTop | 返回元素的垂直偏移位置。 |
2.position
static默认。位置设置为 static 的元素,它始终会处于页面流给予的位置(static 元素会忽略任何 top、bottom、left 或 right 声明)。
relative位置被设置为 relative 的元素,可将其移至相对于其正常位置的地方,因此 "left:20" 会将元素移至元素正常位置左边 20 个像素的位置。
absolute位置设置为 absolute 的元素,可定位于相对于包含它的元素的指定坐标。此元素的位置可通过 "left"、"top"、"right" 以及 "bottom" 属性来规定。
fixed位置被设置为 fixed 的元素,可定位于相对于浏览器窗口的指定坐标。此元素的位置可通过 "left"、"top"、"right" 以及"bottom" 属性来规定。不论窗口滚动与否,元素都会留在那个位置。工作于 IE7(strict 模式)。
3.left 属性设置定位元素左外边距边界与其包含块左边界之间的偏移。如果 "position" 属性的值为 "static",那么设置 "left" 属性不会产生任何效果。
<!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8"> <title></title> <style> div{ width: 300px; height: 200px; background: red; position: absolute; left: 20px; } </style> <script> window.onload = function () { var oDiv = document.getElementById('div1'); alert(oDiv.offsetParent); alert(oDiv.offsetLeft); setInterval(function () { oDiv.style.left = oDiv.offsetLeft + 2 + 'px'; }, 10); }; </script> </head> <body> <div id="div1"></div> </body> </html>
在写这个div块的运动时,刚开始没有加position,导致即使用element.style.left设置了距离HTML的左边距它也不运动,由上面的知识可以知道div块的默认为static,它会忽略上下左右的距离,在控制台里面可以看到行间的left变化了,然而并没有什么卵用。后来加上了position为absolute或者relative都是可以的。