每次碰到元素滚动呀、鼠标拖动呀之类的通过对比位置来触发事件的需求时,都要花很多时间来百度怎么取到自己想要的那个值,什么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。

二,元素的各种距离   (常用)

  1,el.style.width / height / left / right

<div style="width: 100px;height: 100px;"></div>

    获取元素内联样式的宽度/高度/left值/right值。  如果元素上没写内联样式则返回空字符串   (不包括padding、border和margin,并且返回的值会带单位)

  2,window.getComputedStyle().width / height / left / right

    获取元素最终经过浏览器计算出来的width height left right。  (不包括padding、border和margin,并且返回的值会带单位)

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

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

  5,el.clientWidth / clientHeight / clientLeft / clientTop :  获取当前元素的内部宽度/内部高度/左边框宽度/上边框宽度    (包含padding,如果有滚动条,则要去掉滚动条的宽度)

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

  

  7,el.scrollTop/scrollLeft : 此属性为可读写属性,为元素离父元素的滚动高度和滚动左边距。也可以设置当前元素的滚动高度。 (返回的值不带单位)

三: 触点的距离

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

  pageX pageY  :  这两个是距离本页面左部和 顶部的距离, 即使 页面有滚动,  也包括滚动的距离

  clientX, clientY   这也是距离页面左部和顶部的距离,  如果页面没有滚动条,  它俩的值和pageX pageY相同,   如果有滚动条    不包含滚动的距离!

  offsetX offsetY  :  距离当前元素的左部和顶部的距离

  screenX  screenY :  获取当前触点到当前屏幕的x坐标和y坐标。

  layerX  layerY  : 获取当前触点到最近的采用定位的祖先元素的 x和y坐标。如果祖先元素没有定位元素,则以body元素为基准。

  x  y  : 返回当前触点相对于可视区域的 x坐标和y坐标。

  

  offsetX / offsetY: W3C- IE+ Firefox- Opera+ Safari+ chrome+

  x / y:       W3C- IE+ Firefox- Opera+ Safari+ chrome+

  layerX/layerY:   W3C- IE- Firefox+ Opera- Safari+ chrome+

  pageX/pageY:   W3C- IE- Firefox+ Opera+ Safari+ chrome+

  clientX/clientY:  W3C+ IE+ Firefox+ Opera+ Safari+ chrome+

  screenX/screenY:   W3C+ IE+ Firefox+ Opera+ Safari+ chrome+

只有 clientX/ clientY     和 screenX/ screenY 是标准并且所有的都兼容, 其他的如果要使用, 请做兼容处理吧

js中元素、触点等各种距离的总结的更多相关文章

  1. js中元素(图片)切换和隐藏显示问题

    这个知识点其实也简单,(当然是在理清思路的情况下),在没预习的情况下听的还真是艰难,上课以来唯一的一次懵逼了一天,感觉乱乱的,全是新属性,所以今晚的我破天荒的熬夜敲代码,一定要弄懂! 现在就来梳理下头 ...

  2. js中元素更新value页面体现不出来的原因

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. 一文看懂js中元素的滚动大小(scrollWidth,scrollHeight,scrollTop,scrollLeft)

    滚动大小(scroll dimension) 滚动大小指的是包含滚动内容元素的大小. 以下是与元素滚动内容大小相关的属性: 1. scrollWidth:在没有滚动条的情况下,元素内容的总宽度. 2. ...

  4. 一文看懂js中元素的客户区大小(clientWidth,clientHeight)

    元素的客户区 元素的客户区大小,指的是元素内容及其内边距所占据的空间大小. 相关属性如下: 1. clientWidth:元素内容区宽度+元素左右内边距 2. clientHeight:元素内容区高度 ...

  5. 一文看懂js中元素偏移量(offsetLeft,offsetTop,offsetWidth,offsetHeight)

    偏移量(offset dimension) 偏移量:包括元素在屏幕上占用的所有可见空间,元素的可见大小有其高度,宽度决定,包括所有内边距,滚动条和边框大小(注意,不包括外边距). 以下4个属性可以获取 ...

  6. js中元素操作的有关内容与对比

    以下 A:代表原生js B:代表jQuery 1 创建元素/节点 A: 元素节点- createElement( ) 文本节点 - createTextNode() 例如: var a = docum ...

  7. js中元素结点的引用

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  8. JS中各种宽度距离小结

    js中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词解释 screen:屏幕.这一类取到的是关于屏幕的宽度和距离,与浏览器无关,应该 ...

  9. js基础之DOM中元素对象的属性方法

    在 HTML DOM (文档对象模型)中,每个部分都是节点. 节点是DOM结构中最基本的组成单元,每一个HTML标签都是DOM结构的节点. 文档是一个    文档节点 . 所有的HTML元素都是    ...

随机推荐

  1. png 深度图像 转为 点云(opencv2)

    https://github.com/kruglov-dmitry/pnd2pcd_batch

  2. JMS 之 Active MQ的安全机制

    一.认证 认证(Authentication):验证某个实体或者用户是否有权限访问受保护资源. MQ提供两种插件用于权限认证:(一).Simple authentication plug-in:直接把 ...

  3. 爬虫常用Xpath和CSS3选择器对比

    爬虫常用Xpath和CSS3选择器对比 1. 简介 CSS是来配合HTML工作的,和Xpath对比起来,CSS选择器通常都比较短小,但是功能不够强大.CSS中的空白符' '和Xpath的'//'都表示 ...

  4. Go语言特性

    1.入口,go有且只有一个入口函数,就是main函数 liteide (IDE)的 一个工程(文件夹)只能有且只有一个main函数 package main import "fmt" ...

  5. python 输入输出,file, os模块

    Python 输入和输出 输出格式美化 Python两种输出值的方式: 表达式语句和 print() 函数. 第三种方式是使用文件对象的 write() 方法,标准输出文件可以用 sys.stdout ...

  6. java/rabbitmp发布订阅示例(转)

    原文:http://www.cnblogs.com/tinmh/p/6134875.html 发布/订阅模式即生产者将消息发送给多个消费者. 下面介绍几个在发布/订阅模式中的关键概念-- 1. Exc ...

  7. jcabanillas/yii2-inspinia-asset composert 安装失败

    minimum-stability (root-only) 这定义了通过稳定性过滤包的默认行为.默认为 stable(稳定).因此如果你依赖于一个 dev(开发)包,你应该明确的进行定义. 对每个包的 ...

  8. Spark 0.9.1和Shark 0.9.1分布式安装指南

    目录 目录 1 1. 约定 1 2. 安装Scala 1 2.1. 下载 2 2.2. 安装 2 2.3. 设置环境变量 2 3. 安装Spark 2 3.1. 部署 2 3.2. 下载 3 3.3. ...

  9. 获取host信息

    QT如果要进行网络编程首先需要在.pro”中添加如下代码: QT += network 在头文件中包含相关头文件: #include <QHostInfo> #include <QN ...

  10. 推荐一款优秀的代码编辑软件--Source Insight

    “工欲善其事,必先利其器”,好的工具能够提高我们办事的效率,进而提升团队乃至企业的竞争力. 对于软件开发工程师来说,选择一款优秀的代码编辑软件也是很重要的.最近,我看到有很多同事还在用微软的VC ++ ...