1.常见的事件位置属性

e.pageX——相对整个页面的坐标

注意:IE6、IE7、IE8无该属性

e.layerX——相对当前坐标系的border左上角开始的坐标

注意:在opera、IE6、IE7、IE8中这个属性,而IE8以上表示相对当前坐标系的border左上角开始的坐标 + 滚动条滚过的距离

e.offsetX——相对当前坐标系的border左上角开始的坐标

注意:火狐中无该属性

e.clientX——相对可视区域的坐标

e.x——相对可视区域的坐标

注意:火狐中无该属性

2.pageX和clientX

pageX指鼠标在页面上的位置,以页面左侧为参考点

clientX指可视区域内离左侧的距离,以滚动条滚动到的位置为参考点。各个浏览器相同。

即当有滚动条时clientX 小于 pageX

//ie6、7、8不识别pageX

PageY=clientY+scrollTop-clientTop;(只讨论Y轴,X轴同理,下同)

页面上的位置=可视区域位置+页面滚动条切去高度-自身border高度

3.screenX

鼠标在屏幕中的位置,指的是鼠标到电脑屏幕左侧的距离。 各个浏览器相同。

与clientX的区别是clientX是到浏览器的距离。

例如:当网页缩小,拖动到屏幕中间时,screnX 大于 clientX

4、offsetX和layerX

为了兼容浏览器,layerX是FF、chrome识别,offsetX是除了FF之外。

如果触发元素设置了position,则offsetX等于layerX

如果页面有滚动条,添加滚动的距离。

layerX:FF特有,是相对于父元素的位置,鼠标相对于“触发事件的元素的层级关系中离该元素最近的,设置了positio的父元素”的边界的位置,从border的左上角开始定位,即如果这个父元素存在border,则坐标原点在border的左上角,而不是内容区域的左上角。

offsetX:IE特有,鼠标相对于“触发事件的元素”的位置,从内容区域左上角开始定位,不是从border左上角开始!这个属性比较好用,用来判断鼠标点在一个元素中的哪个位置很方便,FF没有直接替换的属性。

5.e.x

到可视区域的距离,FF不识别,有无滚动条相同,同clientX。

  opera,chrome和safari的event.x返回值和event.clientX相同。

  IE8、9、10的event.x返回值和event.clientX相同。

  ie7的e.x比e.clientX少2px。

注意:以上仅以X为例,有X的属性就有对应的Y属性,例如:e.pageX和e.pageY,他们是成对存在的。

6.offset详解

scrollHeight: 获取对象的滚动的高度。

scrollWidth:获取对象的滚动的宽度

scrollLeft:设置或获取位于对象左边界和窗口中目前可见内容的最左端之间的距离,即被卷起的宽度

scrollTop:设置或获取位于对象最顶端和窗口中可见内容的最顶端之间的距离,即被卷起的高度

offsetHeight:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的高度(包括border),即对象本身高+border上下宽度

offsetWidth:获取对象相对于版面或由父坐标 offsetParent 属性指定的父坐标的宽度(包括border),即对象本身宽度+border左右宽度

offsetLeft:获取对象相对于版面或由 offsetParent 属性指定的父坐标的计算左侧位置,即相对于父元素的左位移

offsetTop:获取对象相对于版面或由 offsetTop 属性指定的父坐标的计算顶端位置,即相对于父元素的上位移

event.clientX: 相对文档的水平座标,即相对于可视区域的水平坐标

event.clientY: 相对文档的垂直座标,即相对于可视区域的垂直坐标

event.offsetX: 相对容器的水平坐标,即相对于父元素的水平坐标

event.offsetY: 相对容器的垂直坐标,即相对于父元素的垂直坐标

clientWidth:对象相对于网页可见区域的宽度

clientHeight:对象相对于网页可见区域的高度

js中scrollLeft、scrollWidth、offsetTop等相关位置属性的理解(转)的更多相关文章

  1. js中clientWidth, scrollWidth, innerWidth, outerWidth,offsetWidth的区别

    js中clientWidth, scrollWidth, innerWidth, outerWidth,offsetWidth的属性汇总,测试浏览器:ie7~ie11.chrome 和 firefox ...

  2. JS中的prototype、__proto__与constructor属性

    作为一名前端工程师,必须搞懂JS中的prototype.__proto__与constructor属性,相信很多初学者对这些属性存在许多困惑,容易把它们混淆,本文旨在帮助大家理清它们之间的关系并彻底搞 ...

  3. js中的各种宽高以及位置总结

    在javascript中操作dom节点让其运动的时候,常常会涉及到各种宽高以及位置坐标等概念,如果不能很好地理解这些属性所代表的意义,就不能理解js的运动原理,同时,由于这些属性概念较多,加上浏览器之 ...

  4. js中的如何定位固定层的位置

    需要获取一些HTML的对象的坐标来更灵活的设置目标层的坐标,这里可以通过用到document.body.scrollTop等属性,但是这些属性在xhtml的标准网页中或更简单的说就是带<!DOC ...

  5. jQuery UI =>jquery-ui.js中sortable方法拖拽对象位置偏移问题

    今天要处理sortable方法处理的对象,拖拽的时候,位置偏移的问题. 按理应该是鼠标在哪,对象就跟着在哪的 百度了一下问题,http://blog.csdn.net/samed/article/de ...

  6. 详解JS中DOM 元素的 attribute 和 property 属性

    一.'表亲戚':attribute和property 为什么称attribute和property为'表亲戚'呢?因为他们既有共同处,也有不同点. attribute 是 dom 元素在文档中作为 h ...

  7. JS中的实例方法、静态方法、实例属性、静态属性

    一.静态方法与实例方法的例子: 我们先来看一个例子来看一下JS中的静态方法和实例方法到底是什么? 静态方法: function A(){} A.col='red'  //静态属性 A.sayMeS=f ...

  8. Js中关于构造函数,原型,原型链深入理解

    在 ES6之前,在Javascript不存在类(Class)的概念,javascript中不是基于类的,而是通过构造函数(constructor)和原型链(prototype chains)实现的.但 ...

  9. JS中对象的定义及相关操作

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

随机推荐

  1. Wordpress笔记:背景音乐

    想要在blog首页加上自动播放的背景音乐,能找到的插件与方法基本上都是讲在文章里添加的.侧边栏里添加文本的方法也总有美观等等这样那样的问题,折腾了几种之后终于搞定了.用的是Audio player插件 ...

  2. Java---Static内存图详解

    案例: 输出结果 内存图: 执行流程: java文件通过编译成class文件,class文件通过类加载器加载到方法区中,程序首先会加载核心类库,也就是你的程序想要运行所需要的一些最基本的类.接着程序会 ...

  3. Java中基本的打包jar和war文件(包括eclipse打包操作)

    前言: 为什么要打jar包? 1.举个例子,当编写一个工具类库,里面有十几个类,每个类对应一个class文件时,为了方便别人调用,是不是要装在一个文件中,方便传递和引用. 2.打jar包还有一个好处, ...

  4. jeesite导入数据库错误:java.sql.SQLException: Incorrect string value: '\xE4\xB8\xAD\xE5\x9B\xBD' for column 'name' at row 1问题解决

    如果使用mvn antrun:run -Pinit-db进行数据库导入导致出现如下错误: 解决方法: 这个是由于新建数据库没有选择默认字符集导致的,只要选择utf-8即可.

  5. logback MDC(Mapped Diagnostic Context)与分布式系统的跟踪系统

    logback MDC(Mapped Diagnostic Context)与分布式系统的跟踪系统 logback官方文档中第8章Mapped Diagnostic Context给我们提供了一些分布 ...

  6. ylbtech-czgfh(规范化)-数据库设计

    ylbtech-DatabaseDesgin:ylbtech-czgfh(规范化)-数据库设计 DatabaseName:czgfh(财政规范化) Model:账户模块.系统时间设计模块.上报自评和审 ...

  7. django导出数据到excel

    import xlwt,StringIodef dumpData(request): #获取数据 activitys = Activity.objects.all().order_by('id') i ...

  8. java基础篇6之代理

    代理的概念与应用 Class clazzProxy = Proxy.getProxyClass(Collection.class.getClassLoader,Collection.class); c ...

  9. 不让命令记录到history中

    先执行export HISTCONTROL=ignoresapce 然后再敲命令时在命令前面加一个空格

  10. Python将JSON格式数据转换为SQL语句以便导入MySQL数据库

    前文中我们把网络爬虫爬取的数据保存为JSON格式,但为了能够更方便地处理数据.我们希望把这些数据导入到MySQL数据库中.phpMyadmin能够把MySQL数据库中的数据导出为JSON格式文件,但却 ...