谈谈对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 Archive Network 集合
May 12 Javascript
js刷新框架子页面的七种方法代码
Nov 20 Javascript
使用Node.js实现一个简单的FastCGI服务器实例
Jun 09 Javascript
jquery pagination分页插件使用详解(后台struts2)
Jan 22 Javascript
Angular.JS中的this指向详解
May 17 Javascript
Bootstrap3.3.7导航栏下拉菜单鼠标滑过展开效果
Oct 31 Javascript
基于Vue框架vux组件库实现上拉刷新功能
Nov 28 Javascript
JQuery元素快速查找与操作
Apr 22 jQuery
详解JavaScript中的强制类型转换
Apr 15 Javascript
详解vue 路由跳转四种方式 (带参数)
Apr 28 Javascript
vue-cli3项目升级到vue-cli4 的方法总结
Mar 19 Javascript
Vue性能优化的方法
Jul 30 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
从零开始的异世界生活:第二季延期后,B站上架了第二部剧场版
2020/05/06 日漫
连接到txt文本的超链接,不直接打开而是点击后下载的处理方法
2009/07/01 PHP
PHP mb_convert_encoding文字编码的转换函数介绍
2011/11/10 PHP
php长字符串定义方法
2012/07/12 PHP
php把session写入数据库示例
2014/02/26 PHP
php实现的双向队列类实例
2014/09/24 PHP
Yii把CGridView文本框换成下拉框的方法
2014/12/03 PHP
Laravel中encrypt和decrypt的实现方法
2017/09/24 PHP
php使用curl模拟浏览器表单上传文件或者图片的方法
2018/11/10 PHP
根据鼠标的位置动态的控制层的位置
2009/11/24 Javascript
firefox和IE系列的相关区别整理 以备后用
2009/12/28 Javascript
jquery让返回的内容显示在特定div里(代码少而精悍)
2014/06/23 Javascript
Ajax局部更新导致JS事件重复触发问题的解决方法
2014/10/14 Javascript
Js实现网页键盘控制翻页的方法
2014/10/30 Javascript
探索angularjs+requirejs全面实现按需加载的套路
2016/02/26 Javascript
基于Bootstrap实现下拉菜单项和表单导航条(两个菜单项,一个下拉菜单和登录表单导航条)
2016/07/22 Javascript
JS获取数组中出现次数最多及第二多元素的方法
2017/10/27 Javascript
微信小程序动态设置图片大小的方法
2019/11/21 Javascript
Vue实现图书管理小案例
2020/12/03 Vue.js
[46:02]DOTA2上海特级锦标赛D组资格赛#2 Liquid VS VP第二局
2016/02/28 DOTA
python 线程的暂停, 恢复, 退出详解及实例
2016/12/06 Python
Python实现将一个大文件按段落分隔为多个小文件的简单操作方法
2017/04/17 Python
Python 循环语句之 while,for语句详解
2018/04/23 Python
python利用itertools生成密码字典并多线程撞库破解rar密码
2019/08/12 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
给大家整理了19个pythonic的编程习惯(小结)
2019/09/25 Python
Python性能分析工具Profile使用实例
2019/11/19 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
使用tensorflow实现VGG网络,训练mnist数据集方式
2020/05/26 Python
Python如何测试stdout输出
2020/08/10 Python
详解Python 中的 defaultdict 数据类型
2021/02/22 Python
Mistine官方海外旗舰店:泰国国民彩妆品牌
2016/12/28 全球购物
Ever New美国:澳大利亚领先的女装时尚品牌
2019/11/28 全球购物
名人演讲稿范文
2013/12/28 职场文书
电子专业毕业生自荐信
2014/05/25 职场文书
MySQL非空约束(not null)案例讲解
2021/08/23 MySQL