谈谈对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获取textarea中的光标位置
May 06 Javascript
Ext面向对象开发实践(续)
Nov 18 Javascript
30个最佳jQuery Lightbox效果插件分享
Apr 11 Javascript
jquery限制输入字数,并提示剩余字数实现代码
Dec 24 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
Nov 24 Javascript
js实现浏览本地文件并显示扩展名的方法
Aug 17 Javascript
etmvc+jQuery EasyUI+combobox多值操作实现角色授权实例
Nov 09 Javascript
ES6新增数据结构WeakSet的用法详解
Aug 07 Javascript
JS遍历DOM文档树的方法实例详解
Apr 03 Javascript
Vue.js中关于侦听器(watch)的高级用法示例
May 02 Javascript
React 使用recharts实现散点地图的示例代码
Dec 07 Javascript
VUE动态生成word的实现
Jul 26 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
2019年中国咖啡业现状与发展趋势
2021/03/04 咖啡文化
简单的页面缓冲技术
2006/10/09 PHP
mysql5详细安装教程
2007/01/15 PHP
Zend Framework开发入门经典教程
2016/03/23 PHP
PHP的PDO连接讲解
2019/01/24 PHP
使用IE6看老赵的博客 jQuery初探
2010/01/17 Javascript
Javascript 函数中的参数使用分析
2010/03/27 Javascript
jQuery的运行机制和设计理念分析
2011/04/05 Javascript
bootstrap data与jquery .data
2014/07/07 Javascript
jQuery添加/改变/移除CSS类及判断是否已经存在CSS
2014/08/20 Javascript
解决jquery版本冲突的有效方法
2014/09/02 Javascript
原生JS实现风箱式demo,并封装了一个运动框架(实例代码)
2016/07/22 Javascript
详细探究ES6之Proxy代理
2016/07/22 Javascript
javascript 动态脚本添加的简单方法
2016/10/11 Javascript
JavaScript登录验证码的实现
2016/10/27 Javascript
js实现轮播图的两种方式(构造函数、面向对象)
2017/09/30 Javascript
Vue filter介绍及其使用详解
2017/10/21 Javascript
Vue实现PopupWindow组件详解
2018/04/28 Javascript
vue-cli构建项目下使用微信分享功能
2018/05/28 Javascript
VUE+Element环境搭建与安装的方法步骤
2019/01/24 Javascript
[06:07]辉夜杯现场观众互动 “比谁远送显示器”
2015/12/26 DOTA
Tornado 多进程实现分析详解
2018/01/12 Python
PyQt5 对图片进行缩放的实例
2019/06/18 Python
Django之提交表单与前后端交互的方法
2019/07/19 Python
python中sort sorted reverse reversed函数的区别说明
2020/05/11 Python
Python字典实现伪切片功能
2020/10/28 Python
把Anaconda中的环境导入到Pycharm里面的方法步骤
2020/10/30 Python
ALLSAINTS英国官网:伦敦新锐潮流品牌
2016/09/19 全球购物
世界上最大的巴士旅游观光公司:Big Bus Tours
2016/10/20 全球购物
JAVA中的关键字有什么特点
2014/03/07 面试题
中学生学雷锋活动心得体会
2014/03/10 职场文书
个人授权委托书范本
2014/09/14 职场文书
2014年单位工作总结范文
2014/11/27 职场文书
社区扶贫帮困工作总结
2015/05/20 职场文书
刮痧观后感
2015/06/05 职场文书
关于mysql中string和number的转换问题
2022/06/14 MySQL