及集几
2017-03-17 21:25
offsetLeft是如何获取margin-left的?为什么把left改成margin-left会每次都叠加margin-left的呢?
offseLeft获取的是【当前对象】跟【具有定位属性的上级父元素】最左边的距离,不会获取margin-left:
例如:<div style='position:relative'>
<span style='position:absolute; top:20px; left:20px;'>我是当前对象</span>
<div>
在上面,span的父元素使用了相对定位,因此,span对象的offsetLeft属性获取的值,就是span到div最左边的距离。
另外,offsetLeft属性获取的值是只可读数值(如20,只是个数值,可以用来计算的),而obj.style.left获取的值是字符串(如20px),并且是可以读写的,这是二者之间的差别。所以在js动画里,要用offsetLeft获取的值来进行数学计算设置动画,而不是用obj.style.left获取的字符串。
对于你说的【left改成margin-left会每次都叠加margin-left】,这里的left就是obj.style.left,它在css里面对应的,是定位的左边距离,是从对象的盒子最外边开始计算的。而margin-left是盒子模型中的外边距部分,你把左边距改成外边距,当然是外边距增加啦
JS动画效果
113925 学习 · 1443 问题
相似问题