坐标(鼠标/触摸)

event.screenX                          鼠标/触摸,相对于显示屏的X坐标
event.screenY 鼠标/触摸,相对于显示屏的Y坐标 event.clientX 鼠标/触摸,相对于浏览器视口的X坐标
event.clientY 鼠标/触摸,相对于浏览器视口的Y坐标 event.pageX 鼠标/触摸,相对于文档的X坐标(ie不支持)
event.pageY 鼠标/触摸,相对于文档的Y坐标(ie不支持) event.offsetX 鼠标/触摸,相对于触发事件的X坐标(ie独有)
event.offsetY 鼠标/触摸,相对于触发事件的Y坐标(ie独有)

滚动(窗口/页面)

window.pageXOffset                     X轴滚动条,能向右滚动的距离(只读属性/IE需要9以上/PC和移动端都支持)
window.pageYOffset Y轴滚动条,能向下滚动的距离(只读属性/IE需要9以上/PC和移动端都支持) document.body.scrollLeft X轴滚动条,能向右滚动的距离(仅移动端支持)
document.body.scrollTop Y轴滚动条,能向下滚动的距离(仅移动端支持) document.documentElement.scrollTop X轴滚动条,能向右滚动的距离(仅PC端支持)
document.documentElement.scrollLeft Y轴滚动条,能向下滚动的距离(仅PC端支持) document.scrollingElement.scrollTop X轴滚动条,能向右滚动的距离(ie不支持)
document.scrollingElement.scrollLeft Y轴滚动条,能向下滚动的距离(ie不支持)

宽高(屏幕/游览器视口/页面)

screen.width                           屏幕宽度
screen.height 屏幕高度
screen.availWidth 屏幕可用宽度
screen.availWidth 屏幕可用高度 window.outerWidth 游览器宽度
window.outerHeight 游览器高度
window.innerWidth 游览器视口宽度
window.innerHeight 游览器视口高度 document.body.offsetWidth 页面宽度
document.body.offsetHeight 页面高度
document.body.clientWidth 页面可显示宽度
document.body.clientHeight 页面可显示高度

宽高&距离(DOM)

offsetWidth                            元素宽度(可视内容区 + 滚动条 + 内边距 + 边框)
offsetHeight 元素高度(可视内容区 + 滚动条 + 内边距 + 边框)
offsetLeft 与相邻父级的左距离
offsetTop 与相邻父级的上距离 clientWidth 元素宽度(可视内容区 + 内边距)
clientHeight 元素高度(可视内容区 + 内边距)
clientLeft 内边距边缘与边框边缘的距离(左边框)
clientTop 内边距边缘与边框边缘的距离(上边框) scrollWidth 元素宽度(可视内容区 + 滚动内容区 + 内边距)
scrollHeight 元素高度(可视内容区 + 滚动内容区 + 内边距)
scrollLeft 隐藏的滚动距离(待滚动距离)
scrollTop 隐藏的滚动距离(待滚动距离)

宽高&位置(DOM)

getBoundingClientRect()                返回元素的宽高与坐标集合
> 宽高 = 可视内容区 + 内边距 + 边框
> 坐标
left = 位移 + 外边距
right = 位移 + 完整盒子模型所占宽度
top = 同left
bottom = 同right getClientRects() 返回元素的数个矩形区域的类数组对象(集合)
> 用于块级元素,则集合[n]和getBoundingClientRect返回相同
> 用于内联元素,内联元素有多少行,该方法返回的对象有多少个成员
> 该方法,用于判断行内元素是否换行,以及行内元素的每一行的位置偏移 document.getClientRects(x, y) 返回当前文档上处于指定坐标位置最顶层的元素的最里层元素
> 最顶层,指z-index最大的元素
> 最里层,是指最里层面的子元素
> 该方法,用来检测元素是否发生重叠或是碰撞

临近父容器

offsetParent

获取与邻近父级的距离集合

function getElementPosition(e) {
var x = 0, y = 0;
while (e != null) {
x+=e.offsetLeft;
y+=e.offsetTop;
e=e.offsetParent;
}
return { x: x, y: y };
} 1.对于表格和内嵌框架布局的页面,由于不同浏览器实现这些元素的方式不同,得到的值并不精确
2.当文档中含有滚动条的时候,该方法就不能正常工作了

javascript获取坐标/滚动/宽高/距离的更多相关文章

  1. JavaScript中的各种宽高以及位置总结

    JavaScript中的各种宽高以及位置总结 在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动 ...

  2. JS获取元素的宽高以及offsetTop,offsetLeft等的属性值

    基本介绍 $(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj ...

  3. JS基础篇--JS获取元素的宽高以及offsetTop,offsetLeft等的属性值

    $(obj).width()与$(obj).height() $(obj).width()与$(obj).height() :jquery方式获取元素的宽高,不包括滚动条与工具条 $(obj).wid ...

  4. 监听视图树 ViewTreeObserver 获取View的宽高

    前奏:在哪里可以获取到View的宽高 我们知道,在onCreate方法执行完毕以后,View才开始被测量,所以我们在onCreate方法里面通过view.getWidth()或view.getMeas ...

  5. Js怎么获取DOM及获取浏览器的宽高?

    在JavaScript中,经常会需要获取document文档元素,是HTML文档对象模型的缩写,HTML DOM 定义了用于 HTML 的一系列标准的对象,以及访问和处理 HTML 文档的标准方法. ...

  6. 在渲染前获取 View 的宽高

    在渲染前获取 View 的宽高 这是一个比较有意义的问题,或者说有难度的问题,问题的背景为:有时候我们需要在view渲染前去获取其宽高,典型的情形是,我们想在onCreate.onStart.onRe ...

  7. js获取隐藏元素宽高的方法

    网上有一些js获取隐藏元素宽高的方法,但是可能会存在某些情况获取不了. 例如: <!DOCTYPE html> <html lang="en"> <h ...

  8. js判断图片加载完成后获取图片实际宽高

    通常,我们会用jq的.width()/.height()方法获取图片的宽度/高度或者用js的.offsetwidth/.offsetheight方法来获取图片的宽度/高度,但这些方法在我们通过样式设置 ...

  9. RT/Metro商店应用如何如何获取图片的宽高

    RT/Metro商店应用如何如何获取图片的宽高 var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms ...

随机推荐

  1. Django开发纯后台服务的时候遇到CSRF引起的报错

    Django视图: 当请求为post请求时会遇到CSRF的报错,Django针对CSRF的保护措施是在生成的每个表单中放置一个自动生成的令牌,通过这个令牌判断POST请求是否来自同一个网站,只需要在f ...

  2. 手把手教你搭建Pytest+Allure2.X环境详细教程,生成让你一见钟情的测试报告(非常详细,非常实用)

    简介 宏哥之前在做接口自动化的时候,用的测试报告是HTMLTestRunner,虽说自定义模板后能满足基本诉求,但是仍显得不够档次,高端,大气,遂想用其他优秀的report框架替换之.一次偶然的机会, ...

  3. redis-公平信号量

    但各个系统的系统时间并不完全相同时,基本信号量就会出现问题:系统时间较慢的系统,将能够偷走系统时钟快的系统的信号量,导致信号量变得不公平.以下方法,只要系统间时间相差不到1秒,就不会出现信号量被偷或提 ...

  4. 织梦cms列表页获取标签

    <!-- 标签 --> [field:id runphp='yes'] global $cfg_cmspath; $tags = GetTags(@me); $revalue = ''; ...

  5. spring5 源码深度解析----- AOP目标方法和增强方法的执行(100%理解AOP)

    上一篇博文中我们讲了代理类的生成,这一篇主要讲解剩下的部分,当代理类调用时,目标方法和代理方法是如何执行的,我们还是接着上篇的ReflectiveMethodInvocation类Proceed方法来 ...

  6. QQ第三方授权登录OAuth2.0实现(Java)

    准备材料 1.已经备案好的域名 2.服务器(域名和服务器为统一主体或域名已接入服务器) 3.QQ号 4.开发流程:https://wiki.connect.qq.com/%E5%87%86%E5%A4 ...

  7. ef core实现无感知软删除

    很多web程序一般的偶不会设计真的物理删除了. 基本上都是在在数据库加一个标记,就得当作已经删除了.同时在查询的时候,过滤已经标记删除的数据 ef core实现软删除是非常简单的,直接在OnModel ...

  8. 分库分表(5) ---SpringBoot + ShardingSphere 实现分库分表

    分库分表(5)--- ShardingSphere实现分库分表 有关分库分表前面写了四篇博客: 1.分库分表(1) --- 理论 2.分库分表(2) --- ShardingSphere(理论) 3. ...

  9. Spring项目启动报"Could not resolve placeholder"解决

    1.问题的起因: 除去properites文件路径错误.拼写错误外,出现"Could not resolve placeholder"很有可能是使用了多个PropertyPlace ...

  10. A-08 拉格朗日对偶性

    目录 拉格朗日对偶性 一.原始问题 1.1 约束最优化问题 1.2 广义拉格朗日函数 1.3 约束条件的考虑 二.对偶问题 三.原始问题和对偶问题的关系 3.1 定理1 3.2 推论1 3.3 定理2 ...