原生JS获取页面中DIV绝对位置的方法

JavaScript015

原生JS获取页面中DIV绝对位置的方法,第1张

在 JS获取div高度的方法 中,整理了几个有关于获取div高度的方法,后来又遇到一个问题,怎么获取DIV在页面中的绝对位置,因此在这篇笔记中记录一下。

页面结构

样式

getBoundingClientRect用于获取某个元素 相对于视窗 的位置集合。集合中有top, right, bottom, left等属性。

offsetLeft指的是元素相对于 版面或 由 offsetParent 属性指定的 父坐标 的计算上侧位置,整型,单位像素。

借用这个思路,当我们想获取元素的绝对位置时,可以递归遍历,直到元素的父元素为body为止。

关于offsetParent属性,有以下几点Tips。

js网页绝对定位/相对定位,参考如下:

<html>

<head>

<meta http-equiv="content-type" content="text/htmlcharset=GB2312" />

<title>CSS和Js演示网页绝对定位与相对定位</title>

<!-- 通用样式表 -->

<style>

* { font-size:12pxfont-family:宋体, Arial} /*规定了所有的字体样式*/

body { overflow:autoborder-style:nonemargin:0pxpadding:0px}

.tools { position:absolutetop:180pxleft:10px}

#abs { position:absoluteleft:10pxtop:10pxwidth:150pxheight:150pxbackground-color:buttonfacepadding:10px}

#rel { position:relativeleft:170pxtop:40pxwidth:150pxheight:120pxbackground-color:buttonfacepadding:10px}

</style>

<script>

function logEvent(){

$("ipt_x").value = event.x

$("ipt_y").value = event.y

$("ipt_x2").value = event.clientX

$("ipt_y2").value = event.clientY

}

function $(str){ return(document.getElementById(str))}

window.onload = function(){

document.onmousemove = logEvent

}

</script>

</head>

<body>

<div id="abs">绝对定位</div>

<div id="rel">相对定位</div>

<div class="tools">

event.x <input id="ipt_x" size="15" >

event.y <input id="ipt_y" size="15" >

<br/>

event.clientX <input id="ipt_x2" size="9" >

event.clientY <input id="ipt_y2" size="9" >

</div>

</body>

</html>