js中元素、触点等各种距离的总结

  每次碰到元素滚动呀、鼠标拖动呀之类的通过对比位置来触发事件的需求时,都要花很多时间来百度怎么取到自己想要的那个值,什么scrollTop、offset等等,今天就把这些东西总结一下,以后再使用的话,就不用各种的百度了。

一,window窗口的各种距离

  screen.width/height: 屏幕的宽度/高度

  window.innerWidth/innerHeight : 窗口显示区的宽度/高度

  window.outerWidth/outerHeight : 窗口的外部宽度/高度

  window.pageXOffset/pageYOffset : 当前页面相对于窗口显示区左上角的 X 位置 / Y 位置 

  window.screenLeft/screenTop :  当前窗口的左上角在屏幕上的的 x 坐标和 y 坐标; Firefox支持screenX和screenY。

二,元素的各种距离 (el指当前的dom元素

  el.style.width/height/left/right:获取元素内联样式的宽度/高度/left值/right值。     (不包括padding、border和margin,并且返回的值会带单位)

  window.getComputedStyle().width/height/left/right:  获取元素最终使用的width height left right。  (不包括padding、border和margin,并且返回的值会带单位)

  el.offsetWidth/offsetHeight : 获取元素的宽度/高度。(包括padding、border和margin)

  el.offsetTop/offsetLeft: 获取元素距离最近的采用定位的祖先元素的 top/Left,如果祖先元素没有采用定位的,则返回body

<style>
  *{ margin:0; padding: 0; } #top{ width:100px; height:100px; } </style> <body>
  <div id='top'></div> <div id="box"> <div id="d1"></div> </div> </body>

<script>
let d1 = document.getElementById('d1')
   let box = document.getElementById('box')
  console.log(d1.offsetTop) // 100 d1的父元素没有定位元素,所以offsetTop的距离就是d1到body的上部距离,也就是top的高度。
  box.style.position = 'relative'
  console.log(d1.offsetTop) // 0 d1的父元素改为相对定位,那么这时候offsetTop就是d1到父元素box的距离,也就是0
</script>

  el.clientWidth/clientHeight/clientLeft/clientTop :  获取当前元素的内部宽度/内部高度/左边框宽度/上边框宽度    (包含padding,如果有滚动条,则要去掉滚动条的宽度)  (一般不用来获取el的属性,都是用来获取window的)

  el.scrollWidth/scrollHeight :  如果没有滚动条,则和clientWidth/height的值一样,如果有滚动条,则为内部元素的总高度/宽度(包含padding,有滚动条则去掉滚动条的宽度,较少用)

  el.scrollTop/scrollLeft : 如果元素为滚动元素,包含滚动条,则为元素离父元素的滚动高度和滚动左边距。(一般配合scroll事件来动态获取滚动高度) 

三: 触点的距离

  这里的触点就是事件中event对象所包含的各种位置信息。

  

  

猜你喜欢

转载自www.cnblogs.com/wjyz/p/10238585.html