js运动基础

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都是可以的。

原文地址:https://www.cnblogs.com/zhuni/p/4707711.html