当前位置: 首页 > news >正文

getBoundingClientRect() 来获取页面元素的位置

document.documentElement.getBoundingClientRect

方法获得页面中某个元素的左,上,右和下分别相对浏览器视窗的位置。也不好理解,下面用图说明下。

该方法已经不再是IE Only了,FF3.0+和Opera9.5+已经支持了该方法,可以说在获得页面元素位置上效率能有很大的提高,在以前版本的Opera和Firefox中必须通过循环来获得元素在页面中的绝对位置。

2011052318134272.gif2011052318142412.gif

下面的代码举了个简单的例子,可以滚动滚动条之后点红色区域看各个值的变化。

<!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').οnclick=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)
            var X= this.getBoundingClientRect().left+document.documentElement.scrollLeft;
            var Y = this.getBoundingClientRect().top+document.documentElement.scrollTop;
            alert("Demo的位置是X:"+X+";Y:"+Y)
        } 
}
</script>

相关文章:

  • 索引(二)
  • 《优秀网页设计速查与赏析》464
  • 分享Silverlight/WPF/Windows Phone一周学习导读(05月16日-05月21日)
  • 2015 UESTC 数据结构专题D题 秋实大哥与战争 SET的妙用
  • Sass和Compass入门
  • Operations Manager 2007 R2系列之域控客户端代理安装
  • C# 使用微软的Visual Studio International Pack 类库提取汉字拼音首字母
  • 控件基本属性Padding, Margins, Align...
  • IBM Tivoli Management Framework默认设置漏洞
  • 在 Java SE 6 中监视和诊断性能问题
  • WinCE6.0流驱动开发的两种方法及驱动加载失败问题解决
  • android 深入研究ratingbar自定义
  • 新的Windows Azure SDK for PHP 3.0版本现已推出
  • 2764: [JLOI2011]基因补全
  • struts1.2实现图片上传
  • 【跃迁之路】【463天】刻意练习系列222(2018.05.14)
  • 〔开发系列〕一次关于小程序开发的深度总结
  • css属性的继承、初识值、计算值、当前值、应用值
  • gitlab-ci配置详解(一)
  • JavaWeb(学习笔记二)
  • PAT A1050
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • ubuntu 下nginx安装 并支持https协议
  • 翻译--Thinking in React
  • 记一次删除Git记录中的大文件的过程
  • 如何优雅地使用 Sublime Text
  • 提升用户体验的利器——使用Vue-Occupy实现占位效果
  • 写给高年级小学生看的《Bash 指南》
  • 正则与JS中的正则
  • Nginx实现动静分离
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • # Pytorch 中可以直接调用的Loss Functions总结:
  • #pragma once与条件编译
  • (react踩过的坑)antd 如何同时获取一个select 的value和 label值
  • (ResultSet.TYPE_SCROLL_INSENSITIVE,ResultSet.CONCUR_READ_ONLY)讲解
  • (WSI分类)WSI分类文献小综述 2024
  • (zz)子曾经曰过:先有司,赦小过,举贤才
  • (第27天)Oracle 数据泵转换分区表
  • (二)基于wpr_simulation 的Ros机器人运动控制,gazebo仿真
  • (分享)一个图片添加水印的小demo的页面,可自定义样式
  • (附源码)springboot 校园学生兼职系统 毕业设计 742122
  • (算法)N皇后问题
  • (转)微软牛津计划介绍——屌爆了的自然数据处理解决方案(人脸/语音识别,计算机视觉与语言理解)...
  • .bat批处理(十一):替换字符串中包含百分号%的子串
  • .NET Core MongoDB数据仓储和工作单元模式封装
  • .NET 常见的偏门问题
  • .Net 高效开发之不可错过的实用工具
  • .NET 中创建支持集合初始化器的类型
  • .NET开发人员必知的八个网站
  • .pyc文件还原.py文件_Python什么情况下会生成pyc文件?
  • [AX]AX2012 R2 出差申请和支出报告
  • [C#][opencvsharp]opencvsharp sift和surf特征点匹配
  • [C++]priority_queue的介绍及模拟实现
  • [C++]拼图游戏
  • [FFmpeg学习]从视频中获取图片