js中元素、触点等各种距离的总结
每次碰到元素滚动呀、鼠标拖动呀之类的通过对比位置来触发事件的需求时,都要花很多时间来百度怎么取到自己想要的那个值,什么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中元素、触点等各种距离的总结的更多相关文章
- js中元素(图片)切换和隐藏显示问题
这个知识点其实也简单,(当然是在理清思路的情况下),在没预习的情况下听的还真是艰难,上课以来唯一的一次懵逼了一天,感觉乱乱的,全是新属性,所以今晚的我破天荒的熬夜敲代码,一定要弄懂! 现在就来梳理下头 ...
- js中元素更新value页面体现不出来的原因
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 一文看懂js中元素的滚动大小(scrollWidth,scrollHeight,scrollTop,scrollLeft)
滚动大小(scroll dimension) 滚动大小指的是包含滚动内容元素的大小. 以下是与元素滚动内容大小相关的属性: 1. scrollWidth:在没有滚动条的情况下,元素内容的总宽度. 2. ...
- 一文看懂js中元素的客户区大小(clientWidth,clientHeight)
元素的客户区 元素的客户区大小,指的是元素内容及其内边距所占据的空间大小. 相关属性如下: 1. clientWidth:元素内容区宽度+元素左右内边距 2. clientHeight:元素内容区高度 ...
- 一文看懂js中元素偏移量(offsetLeft,offsetTop,offsetWidth,offsetHeight)
偏移量(offset dimension) 偏移量:包括元素在屏幕上占用的所有可见空间,元素的可见大小有其高度,宽度决定,包括所有内边距,滚动条和边框大小(注意,不包括外边距). 以下4个属性可以获取 ...
- js中元素操作的有关内容与对比
以下 A:代表原生js B:代表jQuery 1 创建元素/节点 A: 元素节点- createElement( ) 文本节点 - createTextNode() 例如: var a = docum ...
- js中元素结点的引用
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- JS中各种宽度距离小结
js中获取各种宽度和距离,常常让我们混淆,各种浏览器的不兼容让我们很头疼,现在就在说说js中有哪些宽度和距离. 1.名词解释 screen:屏幕.这一类取到的是关于屏幕的宽度和距离,与浏览器无关,应该 ...
- js基础之DOM中元素对象的属性方法
在 HTML DOM (文档对象模型)中,每个部分都是节点. 节点是DOM结构中最基本的组成单元,每一个HTML标签都是DOM结构的节点. 文档是一个 文档节点 . 所有的HTML元素都是 ...
随机推荐
- Python创建单例模式的5种常用方法-乾颐堂
所谓单例,是指一个类的实例从始至终只能被创建一次. 方法1 如果想使得某个类从始至终最多只有一个实例,使用__new__方法会很简单.Python中类是通过__new__来创建实例的: 1 2 3 4 ...
- ORM对象/关系模型
1 ORM 对象关系映射(ORM)提供了概念性的.易于理解的模型化数据的方法.ORM方法论基于三个核心原则: 简单:以最基本的形式建模数据. 传达性:数据库结构被任何人都能理解的语言文档化. 精确性: ...
- Reading——简约至上
读书感言: 简约至上——Giles Colborne,我去,这是哪里来的渣书,通篇都是泛泛而谈,实在受不鸟了> <,没学到啥实质性的东西,论述一大堆.!!!还姐的20多块钱.最讨厌这样的书 ...
- PCA 原理
PCA的数学原理(转) 1 年前 PCA(Principal Component Analysis)是一种常用的数据分析方法.PCA通过线性变换将原始数据变换为一组各维度线性无关的表示,可用于提取 ...
- EXCEL 导入 R 的几种方法 R—readr和readxl包
导入Excel数据至R语言的几种方法 如有如下Excel数据源,如何将数据导入R语言呢?今天主要来介绍几种常见的方法: 一.使用剪贴板,然后使用read.table函数: 首先选择Excel中的数据源 ...
- Spring5源码解析-论Spring DispatcherServlet的生命周期
Spring Web框架架构的主要部分是DispatcherServlet.也就是本文中重点介绍的对象. 在本文的第一部分中,我们将看到基于Spring的DispatcherServlet的主要概念: ...
- SIGPIPE信号解析
当服务器close一个连接时,若client端接着发数据.根据TCP协议的规定,会收到一个RST响应,client再往这个服务器发送数据时,系统会发出一个SIGPIPE信号给进程,告诉进程这个连接已经 ...
- CGLIB介绍与原理(通过继承的动态代理)
一.什么是CGLIB? CGLIB是一个功能强大,高性能的代码生成包.它为没有实现接口的类提供代理,为JDK的动态代理提供了很好的补充.通常可以使用Java的动态代理创建代理,但当要代理的类没有实现接 ...
- APUE(8)---进程控制(1)
一.进程标识 每个进程都有一个非负整型标识的唯一进程ID.因为进程ID标识符总是唯一的,常将其用做其他标识符的一部分以保证其唯一性.进程ID虽然是唯一的, 但是却是可以复用的.ID为0的进程通常是调度 ...
- 学习python5面向
类有一个名为 __init__() 的特殊方法(构造方法),该方法在类实例化时会自动调用 面向过程:根据业务逻辑从上到下写代码 面向对象:将数据与函数绑定到一起,进行封装,这样能够更快速的开发程序,减 ...