getBoundingClientRect() 来获取页面元素的位置
document.documentElement.getBoundingClientRect
该方法返回一个对象,从而获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置,即分别代表该元素上、左、右、下四条边界相对于浏览器窗口左上角(注意,不是文档区域的左上角)的偏移像素值。并且该方法已经不再是IE Only了,FF3.0+和Opera9.5+已经支持了该方法,可以说在获得页面元素位置上效率能有很大的提高,所以获取页面上某个元素相对于浏览器窗口的偏移量就成了getBoundingClientRect的用武之地了,按照一篇文章的说法,it\'s awsome,太帅了=。=因为不必纠结于offset、pagex、clientx等等等等等等。在以前版本的Opera和Firefox中必须通过循环来获得元素在页面中的绝对位置。
代码示例:
<span style=\"font-size:14px\"><!DOCTYPE html PUBLIC \"-//W3C//DTD XHTML 1.0 Transitional//EN\" \"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd\">
<html xmlns=\"http://www.w3.org/1999/xhtml\">
<head>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\" />
<title>Demo</title>
</head>
<body style=\"width:2000px; height:1000px;\">
<div id=\"demo\" style=\"position:absolute; left:518px; right:100px; width:500px; height:500px; background:#CC0000; top: 114px;\">Demo为了方便就直接用绝对定位的元素</div>
</body>
</html>
<script>
document.getElementById(\'demo\').onclick=function (){
if (document.documentElement.getBoundingClientRect) {
alert(\"left:\"+this.getBoundingClientRect().left)
alert(\"top:\"+this.getBoundingClientRect().top)
alert(\"right:\"+this.getBoundingClientRect().right)
alert(\"bottom:\"+this.getBoundingClientRect().bottom)
<strong>var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;
var Y = this.getBoundingClientRect().top+document.documentElement.scrollTop;</strong>
alert(\"Demo的位置是X:\"+X+\";Y:\"+Y)
}
}
</script></span>
本文地址:https://www.stayed.cn/item/17536
转载请注明出处。
本站部分内容来源于网络,如侵犯到您的权益,请 联系我