谈谈对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 相关文章推荐
ajax不执行success回调而是执行了error回调
Dec 10 Javascript
JavaScript中json使用自己总结
Aug 13 Javascript
fastclick插件导致日期(input[type=&quot;date&quot;])控件无法被触发该如何解决
Nov 09 Javascript
原生js实现ajax方法(超简单)
Sep 20 Javascript
详解node中创建服务进程
May 09 Javascript
使用命令行工具npm新创建一个vue项目的方法
Dec 27 Javascript
JS中利用FileReader实现上传图片前本地预览功能
Mar 02 Javascript
Angular搜索场景中使用rxjs的操作符处理思路
May 30 Javascript
jquery实现上传图片功能
Jun 29 jQuery
React Ant Design树形表格的复杂增删改操作
Nov 02 Javascript
一分钟学会JavaScript中的try-catch
Dec 14 Javascript
详解Vue的options
May 15 Vue.js
详解 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
ninety plus是什么?ninety plus咖啡好吗?
2021/03/04 新手入门
安装PHP可能遇到的问题“无法载入mysql扩展” 的解决方法
2007/04/16 PHP
PHP中读取文件的8种方法和代码实例
2014/08/05 PHP
thinkphp框架表单数组实现图片批量上传功能示例
2020/04/04 PHP
tp5.1 框架路由操作-URL生成实例分析
2020/05/26 PHP
javascript add event remove event
2008/04/07 Javascript
IE中radio 或checkbox的checked属性初始状态下不能选中显示问题
2009/07/25 Javascript
jquery JSON的解析方式
2009/07/25 Javascript
Array.prototype.slice 使用扩展
2010/06/09 Javascript
jQuery.each()用法分享
2012/07/31 Javascript
jquery实现滑动图片自己测试的例子
2013/11/05 Javascript
js获取页面description的方法
2015/05/21 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
jQuery css() 方法动态修改CSS属性
2016/09/25 Javascript
jquery实现刷新随机变化样式特效(tag标签样式)
2017/02/03 Javascript
详解nodejs express下使用redis管理session
2017/04/24 NodeJs
jQuery实现菜单栏导航效果
2017/08/15 jQuery
vue实现简单的MVVM框架
2018/08/05 Javascript
[02:02]特效爆炸!DOTA2珍宝之瓶待你开启
2018/08/21 DOTA
wxpython 学习笔记 第一天
2009/02/09 Python
Python学习笔记(二)基础语法
2014/06/06 Python
简单解决Python文件中文编码问题
2015/11/22 Python
Python爬虫基础之XPath语法与lxml库的用法详解
2018/09/13 Python
Python DataFrame.groupby()聚合函数,分组级运算
2018/09/18 Python
python实现简单登陆系统
2018/10/18 Python
使用Python来做一个屏幕录制工具的操作代码
2020/01/18 Python
浅析python标准库中的glob
2020/03/13 Python
keras和tensorflow使用fit_generator 批次训练操作
2020/07/03 Python
python将下载到本地m3u8视频合成MP4的代码详解
2020/11/24 Python
高级Java程序员面试要点
2013/08/02 面试题
自荐信模版
2013/10/24 职场文书
试用期自我评价怎么写
2015/03/10 职场文书
培训通知
2015/04/17 职场文书
纪检干部学习心得体会
2016/01/23 职场文书
广播稿:校园广播稿范文
2019/04/17 职场文书
用基于python的appium爬取b站直播消费记录
2021/04/17 Python