谈谈对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中使用构造函数实现继承的代码
Aug 12 Javascript
Pro JavaScript Techniques学习笔记
Dec 28 Javascript
FF IE浏览器修改标签透明度的方法
Jan 27 Javascript
js游戏人物上下左右跑步效果代码分享
Aug 28 Javascript
Java框架SSH结合Easyui控件实现省市县三级联动示例解析
Jun 12 Javascript
ajax异步请求详解
Jan 06 Javascript
bootstrap table动态加载数据示例代码
Mar 25 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
Oct 22 Javascript
JS实现盒子跟着鼠标移动及键盘方向键控制盒子移动效果示例
Jan 29 Javascript
微信小程序Echarts图表组件使用方法详解
Jun 25 Javascript
Vue根据条件添加click事件的方式
Nov 09 Javascript
javascript实现搜索筛选功能实例代码
Nov 12 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
codeigniter教程之上传视频并使用ffmpeg转flv示例
2014/02/13 PHP
PHP中使用array函数新建一个数组
2015/11/19 PHP
PHP分页初探 一个最简单的PHP分页代码的简单实现
2016/06/21 PHP
thinkphp实现附件上传功能
2017/05/26 PHP
PHP中遍历数组的三种常用方法实例分析
2019/06/24 PHP
JavaScript中Array 对象相关的几个方法
2006/12/22 Javascript
jquery实现加载等待效果示例
2013/09/25 Javascript
使用node+vue.js实现SPA应用
2016/01/28 Javascript
浅析jquery与checkbox的checked属性的问题
2016/04/27 Javascript
Javascript OOP之面向对象
2016/07/31 Javascript
微信小程序之拖拽排序(代码分享)
2017/01/21 Javascript
jquery实现弹窗功能(窗口居中显示)
2017/02/27 Javascript
angular-cli修改端口号【angular2】
2017/04/19 Javascript
JavaScript循环_动力节点Java学院整理
2017/06/28 Javascript
浅谈angular4实际项目搭建总结
2017/12/01 Javascript
JavaScript定义及输出螺旋矩阵的方法详解
2017/12/01 Javascript
vue修改对象的属性值后页面不重新渲染的实例
2018/08/09 Javascript
Echart折线图手柄触发事件示例详解
2018/12/16 Javascript
[52:03]Secret vs VG 2018国际邀请赛小组赛BO2 第一场 8.17
2018/08/20 DOTA
python在控制台输出进度条的方法
2015/06/20 Python
使用Python的Flask框架表单插件Flask-WTF实现Web登录验证
2016/07/12 Python
Python实现识别手写数字 简易图片存储管理系统
2018/01/29 Python
python 读txt文件,按‘,’分割每行数据操作
2020/07/05 Python
pandas实现导出数据的四种方式
2020/12/13 Python
ONLY瑞典官网:世界知名服装品牌
2018/06/19 全球购物
法国面料和小百货在线商店:Mondial Tissus
2019/03/23 全球购物
园艺师求职信
2014/04/27 职场文书
党的群众路线对照检查材料
2014/09/22 职场文书
2014年世界艾滋病日演讲稿
2014/11/28 职场文书
高中生自我评价范文2015
2015/03/03 职场文书
复兴之路观后感
2015/06/02 职场文书
网吧管理制度范本
2015/08/05 职场文书
教务处教学工作总结
2015/08/10 职场文书
2016年国庆节假期旅游工作总结
2016/04/01 职场文书
80后创业总结的9条职场用人思想,记得收藏
2019/08/13 职场文书