随笔:offset、client、scroll的小总结

这段日子看到scrollTop,忽然想起了这三个小兄弟,因而看了不少文章,但发现总结的各有优缺和对错,因而决定本身总结一下,仅当随笔。有错误的欢迎指正。spa

这些属性均是用于获取页面元素在网页中的位置或相对位置,这里又能够简单的分为两类用途:对象

           1.获取页面固定元素的位置;2.获取鼠标点击位置事件

先从页面固定元素的位置提及,用法均是  element.属性名  :element

       1.首先仍是来讲说offset家族吧(offsetWidth、offsetHeight、offsetLeft和offsetTop)文档

offsetWidth是指元素的宽度(包括元素的边框),或者说元素水平方向上占用的空间大小。it

offsetHeight是指元素的高度(包括元素的边框),或者说元素垂直方向上占用的空间大小。io

offsetLeft:元素左外边框到  上层元素或左侧元素  之间的距离cli

offsetTop:元素上外边框到  上层元素或左侧元素  之间的距离scroll

         width和height很好理解,只需注意他是包含边框宽度的;总结

         关键在于Left和Top极可能有坑会出现,其实目前发现写也就两种状况:

                    1.对于普通元素。就是距离其左侧最近的兄弟元素或父元素的距离

                    2.对于position:absolute 等脱离文档流的,就要看其left和top属性了

        2.client家族 (clientWidth、clientHeight、clientLeft和clientTop

              了解了offset,其实client很简单。

              clientWidth和clientHeight是不含边框厚度的宽高

              clientLeft和ClientTop则能获取到边框的厚度

         3.scroll家族(scrollTop、scrollLeft、scrollWidth和scrollHeight

             正如offset和client在document.body元素上没有什么实际意义很少说了,

             scroll家族 主要用于document.body元素上, 用在页面元素上并无什么特殊体现

             当页面出现上下或左右滑动条时,scroll的做用就体现出来了:

      document.body.scrollWidth和document.body.scrollHeight就是页面可视区域的大小了,

     document.body.scrollLeft和document.bodyscrollTop就是可视区离整个文档的左、顶侧的距离。

        最后关于这三者的总结就是 :

                    要找某个元素的位置和大小:用elem.offset;

                    要找涉及到元素的边框厚度:用elem.client  ;

                    要涉及到滚轮和可视区大小、距离,用:document.body.scroll ; 

        另外,对于事件对象e的几个获取鼠标位置的属性,是这样的(事件触发时传入并使用):

         相对于屏幕左上角: e.screenX/screenY          相对于文档显示区左上角: e.clientX/clientY          相对于所在元素左上角的坐标:e.offsetX/offsetY

相关文章
相关标签/搜索