offsetleft、offsetTop、offsetParent的兼容性问题

摘要:
this.top:0);}};Tips:代码中的this.left、this.top可以用arguments.callee代替,但根据ECMAScript5规范不建议使用,strictmodel下已经被禁用,因为arguments是一个比较庞大的对象,非常耗资源
先来看看offsetParent返回的是什么值
ele.offsetParent返回的是ele元素最近的并且是定位过(relative,absolute)的父元素,如果没有父元素或者是父元素中没有一个是定位过的,返回值就是body元素
ele.offsetLeft和ele.offsetTop取值问题,分多种情况:
如果ele是body的直接子元素,返回值则是ele距离body左侧或顶部的距离
如果ele不是body的直接子元素,在父元素进行定位(relative,absolute)的情况下,各浏览器返回值都是ele距离父元素左侧或者是顶部的距离(唯一的区别就是chrome没有把边框计算进去,IE,firefox都计算进去了)
如果ele不是body的直接子元素,父元素也没有进行定位的情况下,各浏览器返回的直接是ele元素距body的距离
从上面可以看出offsetLeft、offsetTop返回的值就是ele到offsetParent的距离,这个offsetParent是什么元素要看ele的父元素有没有进行定位(relative、absolute)
应用:
在要获取元素距离网页左侧距离的时候就要考虑offsetParent的定位问题,不能简单的用ele.offsetLeft/Top获取,必须通过循环累加的方式才能获得正确值(chrome的结果和IE、Firefox不一样,相差1px,原因是chrome没有把边框计算进去),下面是代码
var getOffset = {
	left:function(obj){
		return obj.offsetLeft + (obj.offsetParent ? this.left(obj.offsetParent) : 0);
	},
	top:function(){
		return obj.offsetTop + (obj.offsetParent ? this.top(obj.offsetParent) : 0);
	}
};

Tips:代码中的this.left、this.top可以用arguments.callee代替,但根据ECMAScript 5规范不建议使用,strict model下已经被禁用,因为arguments是一个比较庞大的对象,非常耗资源

免责声明:文章转载自《offsetleft、offsetTop、offsetParent的兼容性问题》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Netlink机制详解c# DataTable行转列下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vSAN 兼容性查询指南

vSAN硬件兼容性检查包含哪些?   1. 主机型号/CPU型号/BIOS版本   2. Raid卡型号、固件、驱动   3. 网卡型号、固件、驱动 1. 主机、CPU型号、BIOS版本兼容性查询   示例: 主机型号:Dell PowerEdge R370    CPU型号:E5-2630 v4  BIOS版本:2.7.1(BIOS版本可以在服务器硬件W...

webpack 5 与 webpack-dev-server 3兼容性问题

说明:这里使用的是webpack: "^5.9.0",webpack-cli: "^4.2.0",webpack-dev-server: "^3.11.0" 问题1:通过 npx webpack-dev-server 启动项目失败,报错:Error: Cannot find module 'webpack-cli/bin/config-yargs' 解决...

强制将IE8设置为IE7兼容模式来解析网页(转)

英文原文:http://msdn.microsoft.com/en-us/library/cc288325(VS.85).aspx 文件兼容性用于定义让IE如何编译你的网页。此文件解释文件兼容性,如何指定你网站的文件兼容性模式以及如何判断一个网页该使用的文件模式。 前言 为了帮助确保你的网页在所有未来的IE版本都有一致的外观,IE8引入了文件兼容性。在I...

Visio 保存卡死解决办法

右键Visio图标 属性--兼容性--以兼容模式运行这个程序 要打上对勾  且下面的系统版本要选和你电脑版本一致的选项 特权等级   以管理员身份运行次程序  要打上对勾    转载于:https://www.cnblogs.com/yangjinwang/p/6401792.html...

浅谈scrollTop属性

最近心血来潮,突然想到鼠标滚动改变背景的效果,思路很明确,通过获取鼠标滚动条距离顶端的位置改变背景。实际操作中却遇到不少问题。首先,便是针对鼠标滚动对象的选取,其次,百度了之后发现srollTop这个属性在不同的浏览器中存在一定的兼容性的问题:document.documentElement.scrollTop(火狐),document.body.scro...

低JAVA版本,高兼容性启动

低JAVA版本,高兼容性启动 背景:部分操作系统java环境低版本,暂时无法更新最新版本,新系统需要使用较高版本Java环境 1.JAVA低版本不兼容当前应用 2.解压安装JAVA,无需配置环境变量 3.新系统启动脚本中定义参考: JAVA_HOME="/home/java/jdk1.8.0_161" 4.JAR包启动命令参考: JAVA_OPTIONS=...