谈谈对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 相关文章推荐
JS获取页面窗口大小的代码解读
Dec 01 Javascript
jquery实现倒计时代码分享
Jun 13 Javascript
jQuery实现拖动调整表格单元格大小的代码实例
Jan 13 Javascript
text-align:justify实现文本两端对齐 兼容IE
Aug 19 Javascript
JavaScript实现横向滑出的多级菜单效果
Oct 09 Javascript
JS使用正则表达式过滤多个词语并替换为相同长度星号的方法
Aug 03 Javascript
AngularJS表单和输入验证实例
Nov 02 Javascript
fckeditor部署到weblogic出现xml无法读取及样式不能显示问题的解决方法
Mar 24 Javascript
修改 bootstrap table 默认detailRow样式的实例代码
Jul 21 Javascript
Vue表单及表单绑定方法
Sep 04 Javascript
微信小程序实现轨迹回放的示例代码
Dec 13 Javascript
js+canvas实现简单扫雷小游戏
Jan 22 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下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
PHP面向对象的进阶学习(抽像类、接口、final、类常量)
2012/05/07 PHP
php截取字符串并保留完整xml标签的函数代码
2013/02/06 PHP
ThinkPHP Mobile使用方法简明教程
2014/06/18 PHP
PHP+JS三级菜单联动菜单实现方法
2016/02/24 PHP
PHP对称加密算法(DES/AES)类的实现代码
2017/11/14 PHP
线路分流自动智能跳转代码,自动选择最快镜像网站(js)
2011/10/31 Javascript
FireFox下XML对象转化成字符串的解决方法
2011/12/09 Javascript
使用Grunt.js管理你项目的应用说明
2013/04/24 Javascript
子窗体与父窗体传值示例js代码
2013/08/01 Javascript
jquery中对于批量deferred的处理方法
2014/01/22 Javascript
JS实现的Select三级下拉菜单代码
2015/08/20 Javascript
基于jQuery的select下拉框选择触发事件实例分析
2016/11/18 Javascript
JavaScript实现垂直滚动条效果
2017/01/18 Javascript
超全面的vue.js使用总结
2017/02/12 Javascript
AngularJS中下拉框的高级用法示例
2017/10/11 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
如何优雅地在vue中添加权限控制示例详解
2019/03/07 Javascript
详解vue 图片上传功能
2019/04/30 Javascript
R语言 vs Python对比:数据分析哪家强?
2017/11/17 Python
关于python2 csv写入空白行的问题
2018/06/22 Python
Python实现iOS自动化打包详解步骤
2018/10/03 Python
Python流行ORM框架sqlalchemy安装与使用教程
2019/06/04 Python
Python必须了解的35个关键词
2020/07/16 Python
解决HTML5手机端页面缩放的问题
2017/10/27 HTML / CSS
导出HTML5 Canvas图片并上传服务器功能
2019/08/16 HTML / CSS
美国Rue La La闪购网站:奢侈品、中高档品牌限时折扣
2016/10/19 全球购物
马来西亚在线健康商店:Medipal Malaysia
2020/04/13 全球购物
演讲稿开场白
2014/01/13 职场文书
网站美工岗位职责
2014/04/02 职场文书
羽毛球社团活动总结
2014/06/27 职场文书
邀请书模板
2015/02/02 职场文书
社区安置帮教工作总结2015
2015/05/20 职场文书
游戏《东方异文石:爱亚利亚黎明》正式版发布
2022/04/03 其他游戏
create-react-app开发常用配置教程
2022/06/25 Javascript