js运动遇到的问题之一(postion)
今天在学习js运动的时候遇到了一个问题,在给js加运动时,js不运动,逻辑代码完整,看了答案发现只有css代码不一样,尝试和答案一样
之后,果然可以,但是多添加三个css属性,利用排除法,发现是postion问题。刚开始没有加position,导致即使用element.style.left设置了
距离HTML的左边距它也不运动
element.offsetHeight | 返回元素的高度。 |
---|---|
element.offsetWidth | 返回元素的宽度。 |
element.offsetLeft | 返回元素的水平偏移位置。 |
element.offsetParent | 返回元素的偏移容器。 |
element.offsetTop | 返回元素的垂直偏移位置。 |
原因如下;
在设置样式时:
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” 属性不会产生任何效果。
<head>
<meta charset="UTF-8">
<title>document</title>
<script>
window.onload = function(){
var obtn = document.getElementById('btn');
var box = document.getElementById('hezi');
obtn.onclick = function(){
setInterval(function(){
box.style.left = box.offsetLeft+10+'px';
},30);
}
}
</script>
</head>
<body>
<input type="submit" id="btn" value="运动" >
<div id="hezi" style=" width: 100px; height: 100px;background-color: red;position: absolute;"></div>
</body>
</html>
转载于https://www.cnblogs.com/zhuni/p/4707711.html