谈谈对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 相关文章推荐
JavaScript高级程序设计 读书笔记之八 Function类及闭包
Feb 27 Javascript
jquery时间下拉框小例子
Apr 15 Javascript
js获得地址栏?问号后参数的方法
Aug 08 Javascript
关于jquery的多个选择器的使用示例
Oct 18 Javascript
javascript制作游戏开发碰撞检测的封装代码
Mar 31 Javascript
javascript属性访问表达式用法分析
Apr 25 Javascript
jQuery的end()方法使用详解
Jul 15 Javascript
详解JavaScript的变量和数据类型
Nov 27 Javascript
解决jQuery使用append添加的元素事件无效的问题
Aug 30 jQuery
利用Node.js如何实现文件循环覆写
Apr 05 Javascript
基于mpvue搭建微信小程序项目框架的教程详解
Apr 10 Javascript
Vue SPA 初次进入加载动画实现代码
Nov 14 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 截取字符串函数整理(支持gb2312和utf-8)
2010/02/16 PHP
同台服务器使用缓存APC效率高于Memcached的演示代码
2010/02/16 PHP
php通过文件头检测文件类型通用代码类(zip,rar等)
2010/10/19 PHP
jquery中的事件处理详细介绍
2013/06/24 Javascript
zeroclipboard 单个复制按钮和多个复制按钮的实现方法
2014/06/14 Javascript
Jquery实现由下向上展开效果的例子
2014/12/08 Javascript
asp.net+js实现金额格式化
2015/02/27 Javascript
JS中的eval 为什么加括号
2016/04/13 Javascript
使用JavaScript实现ajax的实例代码
2016/05/11 Javascript
设置点击文本框或图片弹出日历控件的实现代码
2016/05/12 Javascript
谈谈JS中常遇到的浏览器兼容问题和解决方法
2016/12/17 Javascript
jQuery实现用户信息表格的添加和删除功能
2017/09/12 jQuery
vue-cli axios请求方式及跨域处理问题
2018/03/28 Javascript
详解VUE 对element-ui中的ElTableColumn扩展
2018/03/28 Javascript
解决Layui中layer报错的问题
2019/09/03 Javascript
使用p5.js实现动态GIF图片临摹重现
2019/10/23 Javascript
解决vue单页面 回退页面 keeplive 缓存问题
2020/07/22 Javascript
python利用urllib和urllib2访问http的GET/POST详解
2017/09/27 Python
pip命令无法使用的解决方法
2018/06/12 Python
python复制列表时[:]和[::]之间有什么区别
2018/10/16 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
Python实现读取txt文件中的数据并绘制出图形操作示例
2019/02/26 Python
Python 如何提高元组的可读性
2019/08/26 Python
Python描述符descriptor使用原理解析
2020/03/21 Python
Python3操作读写CSV文件使用包过程解析
2020/04/10 Python
Jupyter notebook如何修改平台字体
2020/05/13 Python
Python csv文件记录流程代码解析
2020/07/16 Python
纯CSS3实现Material Design效果
2017/03/09 HTML / CSS
HTML5实现简单图片上传所遇到的问题及解决办法
2016/01/20 HTML / CSS
环法自行车赛官方商店:Le Tour de France
2017/08/27 全球购物
英国领先的在线旅游和休闲零售商:lastminute.com
2019/01/23 全球购物
法国足球商店:Footcenter
2019/07/06 全球购物
国际贸易专业推荐信
2013/11/15 职场文书
浪费资源的建议书
2014/03/12 职场文书
国旗下演讲稿
2014/05/08 职场文书
2014年个人师德工作总结
2014/12/04 职场文书