谈谈对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 相关文章推荐
优化innerHTML操作(提高代码执行效率)
Aug 20 Javascript
JS鼠标滑过图片时切换图片实现思路
Sep 12 Javascript
file控件选择上传文件确定后触发的js事件是哪个
Mar 17 Javascript
js实现绿白相间竖向网页百叶窗动画切换效果
Mar 02 Javascript
MVVM模式中ViewModel和View、Model有什么区别?
Jun 19 Javascript
javascript实现rgb颜色转换成16进制格式
Jul 10 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
Dec 09 Javascript
微信小程序tabBar模板用法实例分析【附demo源码下载】
Nov 28 Javascript
JS实现将二维数组转为json格式字符串操作示例
Jul 12 Javascript
layui的table中显示图片方法
Aug 17 Javascript
微信小程序用户授权、位置授权及获取微信绑定手机号
Jul 18 Javascript
vue组件库的在线主题编辑器的实现思路
Apr 03 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&amp;MYSQL服务器配置说明
2006/10/09 PHP
9个PHP开发常用功能函数小结
2011/07/15 PHP
PHP使用PDO抽象层获取查询结果的方法示例
2018/05/10 PHP
php写入txt乱码的解决方法
2019/09/17 PHP
使用jQuery实现星级评分代码分享
2014/12/09 Javascript
JavaScript DSL 流畅接口(使用链式调用)实例
2015/03/15 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
JavaScript文本框脚本编写的注意事项
2016/01/25 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
2016/05/15 Javascript
浅谈addEventListener和attachEvent的区别
2016/07/14 Javascript
Vue.js第四天学习笔记
2016/12/02 Javascript
解析利用javascript如何判断一个数为素数
2016/12/08 Javascript
bootstrap Table服务端处理分页(后台是.net)
2017/10/19 Javascript
vue2.0 常用的 UI 库实例讲解
2017/12/12 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
详解如何在Javascript和Sass之间共享变量
2019/11/13 Javascript
vue3+typescript实现图片懒加载插件
2020/10/26 Javascript
详解python函数传参是传值还是传引用
2018/01/16 Python
Python实现PS图像明亮度调整效果示例
2018/01/23 Python
python实现隐马尔科夫模型HMM
2018/03/25 Python
python函数与方法的区别总结
2019/06/23 Python
python输入多行字符串的方法总结
2019/07/02 Python
django使用django-apscheduler 实现定时任务的例子
2019/07/20 Python
Django 实现admin后台显示图片缩略图的例子
2019/07/28 Python
基于Django统计博客文章阅读量
2019/10/29 Python
numpy np.newaxis 的实用分享
2019/11/30 Python
pytorch中的卷积和池化计算方式详解
2020/01/03 Python
np.dot()函数的用法详解
2020/01/17 Python
通过实例简单了解python yield使用方法
2020/08/06 Python
Selenium Webdriver元素定位的八种常用方式(小结)
2021/01/13 Python
CSS3 @keyframes简单动画实现
2018/02/24 HTML / CSS
HTML5+CSS设置浮动却没有动反而在中间且错行的问题
2020/05/26 HTML / CSS
Superdry瑞典官网:英国日本街头风品牌
2017/05/17 全球购物
MySQL面试题
2014/01/12 面试题
《小池塘》教学反思
2014/02/28 职场文书
浪漫婚礼主题活动策划方案
2014/09/15 职场文书