JavaScript中style.left与offsetLeft的使用及区别详解


Posted in Javascript onJune 08, 2016

如果父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的位置。

// 这个函数是对 一个无穷分类的 下拉框的操作,页面开始只有一个下拉框,当选中下拉框一个值后,
动态生成一个select, select的项是子分类,同时要使子分类的select框后移 20px;

function itemtree_cats_change ( selectObj )

JavaScript中style.left与offsetLeft的区别说明如下所示:

今天在制作焦点轮播图的时候,遇到一个问题,在使用style.left获取图片的位置时,怎么也获取不到。换用offsetLeft就能够成功获取到了。虽然实现了我想要的效果,但是还是不甘心啊,没有找到原因,心里就是怪怪的,于是我翻开JavaScript高级程序设计,将style.left和offsetLeft有关的知识点都看了一下,做了如下比较。

(一)、对于style.left类属性,JavaScript高级程序是这样描述的:

任何支持style特性的HTML元素在JavaScript中都有一个对应的style属性。这个style对象是CSSStyleDeclaration的实例,包含着通过HTML的style特性指定的所有样式信息,但不包含与外部样式表或嵌入样式表经层叠而来的样式(关键就在这句话!也就是说只有设置为行内样式的style属性才能被获取)。在style特性中指定的任何CSS属性都将表现为这个style对象的相应属性。

(二)、对于offsetLeft累属性:

offsetLeft:元素的左外边框至包含元素的左内边框之间的像素距离。

offsetTop:元素的上外边框至包含元素的上内边框之间的像素距离。

通过看书和今天遇到的问题,对style.left和offsetLeft做如下总结

相同点

1、style.left与offsetLeft都是相对于其父元素的值。

不同点

1、style.left返回的是字符串,带有px;offsetLeft返回的是数值。

2、style.left时可以读取的也是可以配置的;offsetLeft只能读取不能配置。

Javascript 相关文章推荐
鼠标移动到图片名上,显示图片的简单实例
Jul 14 Javascript
jquery实现更改表格行顺序示例
Apr 30 Javascript
jQuery EasyUI实现右键菜单变灰不可用效果
Sep 24 Javascript
jQuery实现二级下拉菜单效果
Jan 05 Javascript
Treegrid的动态加载实例代码
Apr 29 Javascript
AngularJs自定义服务之实现签名和加密
Aug 02 Javascript
jQuery表单对象属性过滤选择器实例详解
Sep 13 Javascript
Vuejs 用$emit与$on来进行兄弟组件之间的数据传输通信
Feb 23 Javascript
Vue+webpack项目基础配置教程
Feb 12 Javascript
vue打包的时候自动将px转成rem的操作方法
Jun 20 Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 Javascript
javascript实现时钟动画
Dec 03 Javascript
Js+Ajax,Get和Post在使用上的区别小结
Jun 08 #Javascript
jQuery.Uploadify插件实现带进度条的批量上传功能
Jun 08 #Javascript
JS与Ajax Get和Post在使用上的区别实例详解
Jun 08 #Javascript
浅谈JS原生Ajax,GET和POST
Jun 08 #Javascript
原生 JS Ajax,GET和POST 请求实例代码
Jun 08 #Javascript
全面解析jQuery $(document).ready()和JavaScript onload事件
Jun 08 #Javascript
jQuery提示插件qTip2用法分析(支持ajax及多种样式)
Jun 08 #Javascript
You might like
用缓存实现静态页面的测试
2006/12/06 PHP
php 无极分类(递归)实现代码
2010/01/05 PHP
PHP开启gzip页面压缩实例代码
2010/03/11 PHP
PHP中overload与override的区别
2017/02/13 PHP
phpstudy默认不支持64位php的解决方法
2017/02/20 PHP
PHP观察者模式示例【Laravel框架中有用到】
2018/06/15 PHP
phpinfo无法显示的原因及解决办法
2019/02/15 PHP
PHP实现批量修改文件名的方法示例
2019/09/18 PHP
php异常处理捕获错误整理
2019/09/23 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
JQuery下关于$.Ready()的分析
2009/12/13 Javascript
Javascript实现带关闭按钮的网页漂浮广告代码
2014/01/12 Javascript
js数组中如何随机取出一个值
2014/06/13 Javascript
nodejs事件的监听与触发的理解分析
2015/02/12 NodeJs
jQuery.deferred对象使用详解
2016/03/18 Javascript
AngularJS基础 ng-href 指令用法
2016/08/01 Javascript
JavaScript职责链模式概述
2016/09/17 Javascript
js监听键盘事件的方法_原生和jquery的区别详解
2016/10/10 Javascript
Bootstrap文件上传组件之bootstrap fileinput
2016/11/25 Javascript
Vue全家桶实践项目总结(推荐)
2017/11/04 Javascript
vue的传参方式汇总和router使用技巧
2018/05/22 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
详解JavaScript中的Object.is()与"==="运算符总结
2020/06/17 Javascript
React实现轮播效果
2020/08/25 Javascript
[05:39]2014DOTA2国际邀请赛 DK晋级胜者组专访战队国士无双
2014/07/14 DOTA
Python编程中对文件和存储器的读写示例
2016/01/25 Python
python放大图片和画方格实现算法
2018/03/30 Python
Python实现针对给定字符串寻找最长非重复子串的方法
2018/04/21 Python
keras中的loss、optimizer、metrics用法
2020/06/15 Python
2015年会计个人工作总结
2015/04/02 职场文书
优秀共产党员主要事迹材料
2015/11/05 职场文书
2019自荐信该如何写呢?
2019/07/05 职场文书
关于Vue Router的10条高级技巧总结
2021/05/06 Vue.js
Python机器学习之PCA降维算法详解
2021/05/19 Python
优化Mysql查询的示例
2022/04/26 MySQL
VUE解决跨域问题Access to XMLHttpRequest at
2022/05/06 Vue.js