谈谈对offsetleft兼容性的理解


Posted in Javascript onNovember 11, 2015

关于此属性的基本用法可以参阅offsetleft属性用法详解一章节。

此属性具有一定的兼容性问题,那就是在IE7浏览器中,它的返回值是想对于最近的父辈元素的左侧的距离。

<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="author" content="http://www.softwhy.com/" />
<title>蚂蚁部落</title>
<style type="text/css">
* {
 margin: 0px;
 padding: 0px;
}
#main {
 width: 300px;
 height: 300px;
 background: red;
 position: absolute;
 left: 100px;
 top: 100px;
}
#box {
 width: 200px;
 height: 200px;
 background: blue;
 margin:50px;
 overflow:hidden;
}
#inner {
 width: 50px;
 height: 50px;
 background: green;
 text-align: center;
 line-height: 50px;
 margin: 50px;
}
</style>
<script type="text/javascript">
window.onload=function(){
 var inner=document.getElementById("inner");
 inner.innerHTML=inner.offsetLeft;
}
</script>
</head>
<body>
<div id="main">
 <div id="box">
 <div id="inner"></div>
 </div>
</div>
</body>
</html>

上面的代码在其他浏览器中返回值是100,但是在IE7浏览器中返回值是50。

至于IE6没有测试,感兴趣的大家可以做一下测试。

下面抽点空给大家介绍offsetLeft与style.left的区别

offsetLeft 获取的是相对于父对象的左边距

left 获取或设置相对于 具有定位属性(position定义为relative)的父对象 的左边距

如果父div的position定义为relative,子div的position定义为absolute,那么子div的style.left的值是相对于父div的值,
这同offsetLeft是相同的,区别在于:

1. style.left 返回的是字符串,如28px,offsetLeft返回的是数值28,如果需要对取得的值进行计算,
还用offsetLeft比较方便。

2. style.left是读写的,offsetLeft是只读的,所以要改变div的位置,只能修改style.left。

3. style.left的值需要事先定义,否则取到的值为空。而且必须要定义在html里,我做过试验,如果定义在
css里,style.left的值仍然 为空,这就是我刚开始碰到的问题,总是取不到style.left的值。

offsetLeft则仍然能够取到,无需事先定义div的位置。

Javascript 相关文章推荐
利用JQuery的load函数动态加载其它页面的内容的实现代码
Dec 14 Javascript
基于JavaScript实现继承机制之构造函数+原型链混合方式的使用详解
May 07 Javascript
Google Dart编程语法和基本类型学习教程
Nov 27 Javascript
根据表格中的某一列进行排序的javascript代码
Nov 29 Javascript
JavaScript实现简单的数字倒计时
May 15 Javascript
微信小程序 删除项目工程实现步骤
Nov 10 Javascript
捕获未处理的Promise错误方法
Oct 13 Javascript
vue计算属性和监听器实例解析
May 10 Javascript
微信小程序Page中data数据操作和函数调用方法
May 08 Javascript
layui 动态设置checbox 选中状态的例子
Sep 02 Javascript
QT与javascript交互数据的实现
May 26 Javascript
JavaScript流程控制(循环)
Dec 06 Javascript
详解 javascript中offsetleft属性的用法
Nov 11 #Javascript
jquery事件的ready()方法使用详解
Nov 11 #Javascript
浅谈使用MVC模式进行JavaScript程序开发
Nov 10 #Javascript
每天一篇javascript学习小结(基础知识)
Nov 10 #Javascript
jQuery+CSS3实现3D立方体旋转效果
Nov 10 #Javascript
JavaScript中利用各种循环进行遍历的方式总结
Nov 10 #Javascript
简单学习JavaScript中的for语句循环结构
Nov 10 #Javascript
You might like
如何在PHP程序中防止盗链
2008/04/09 PHP
snoopy PHP版的网络客户端提供本地下载
2008/04/15 PHP
如何利用PHP执行.SQL文件
2013/07/05 PHP
php读取torrent种子文件内容的方法(测试可用)
2016/05/03 PHP
Laravel 已登陆用户再次查看登陆页面的自动跳转设置方法
2019/09/30 PHP
PHP文件操作简单介绍及函数汇总
2020/12/11 PHP
Prototype使用指南之string.js
2007/01/10 Javascript
火狐textarea输入法的bug的触发及解决
2013/07/24 Javascript
html文件中jquery与velocity变量中的$冲突的解决方法
2013/11/01 Javascript
js实现window.open不被拦截的解决方法汇总
2014/10/30 Javascript
javascript中的this详解
2014/12/08 Javascript
jQuery修改class属性和CSS样式整理
2015/01/30 Javascript
原生js与jQuery实现简单的tab切换特效对比
2015/07/30 Javascript
jQuery form插件之ajaxForm()和ajaxSubmit()的可选参数项对象
2016/01/23 Javascript
几行js代码实现自适应
2017/02/24 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
2017/08/23 Javascript
node 使用 async 控制并发的方法
2018/05/07 Javascript
浅谈Vue.use的使用
2018/08/29 Javascript
关于微信小程序获取小程序码并接受buffer流保存为图片的方法
2019/06/07 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
Windows下搭建python开发环境详细步骤
2020/07/20 Python
Python 遍历子文件和所有子文件夹的代码实例
2016/12/21 Python
python里使用正则的findall函数的实例详解
2017/10/19 Python
Python实现k-means算法
2018/02/23 Python
Python使用Django实现博客系统完整版
2020/09/29 Python
线程安全及Python中的GIL原理分析
2019/10/29 Python
如何导出python安装的所有模块名称和版本号到文件中
2020/06/05 Python
html5配合css3实现带提示文字的输入框(摆脱js)
2013/03/08 HTML / CSS
eDreams澳大利亚:预订机票、酒店和度假产品
2017/04/19 全球购物
定义一结构体变量,用其表示点坐标,并输入两点坐标,求两点之间的距离
2015/08/17 面试题
优秀员工自荐书
2013/12/19 职场文书
环境日宣传活动总结
2014/07/09 职场文书
学校节水倡议书
2015/04/29 职场文书
vue前端工程的搭建
2021/03/31 Vue.js
如何利用opencv判断两张图片是否相同详解
2021/07/07 Python
mysql sum(if())和count(if())的用法说明
2022/01/18 MySQL