offsetLeft是如何获取margin-left

来源:2-1 JS速度动画

及集几

2017-03-17 21:25

offsetLeft是如何获取margin-left的?为什么把left改成margin-left会每次都叠加margin-left的呢?

写回答 关注

1回答

  • 六月ovo
    2017-03-18 09:06:26

    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动画效果

通过本课程JS动画的学习,从简单动画开始,逐步深入各种动画框架封装

113925 学习 · 1443 问题

查看课程

相似问题