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 相关文章推荐
JavaScript 判断判断某个对象是Object还是一个Array
Jan 28 Javascript
javascript函数以及基础写法100多条实用整理
Jan 13 Javascript
JS动态创建Table,Tr,Td并赋值的具体实现
Jul 05 Javascript
jQuery插件开发的两种方法及$.fn.extend的详解
Jan 16 Javascript
经过绑定元素时会多次触发mouseover和mouseout事件
Feb 28 Javascript
JavaScript动态修改背景颜色的方法
Apr 16 Javascript
基于JQuery实现仿网易邮箱全屏动感滚动插件fullPage
Sep 20 Javascript
js+canvas简单绘制圆圈的方法
Jan 28 Javascript
javascript实现方法调用与方法触发小结
Mar 26 Javascript
基于javascript实现贪吃蛇小游戏
Nov 25 Javascript
npm qs模块使用详解
Feb 07 Javascript
jquery检测上传文件大小示例
Apr 26 jQuery
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
php生成的html meta和link标记在body标签里 顶部有个空行
2010/05/18 PHP
php递归实现无限分类生成下拉列表的函数
2010/08/08 PHP
phpstorm配置Xdebug进行调试PHP教程
2014/12/01 PHP
PHP session 会话处理函数
2016/06/06 PHP
用JavaScript显示随机图像或引用
2009/04/21 Javascript
Javascript Math对象
2009/08/13 Javascript
细说javascript函数从函数的构成开始
2013/08/29 Javascript
你可能不知道的JavaScript的new Function()方法
2014/04/17 Javascript
node.js中的http.response.setHeader方法使用说明
2014/12/14 Javascript
使用Vue制作图片轮播组件思路详解
2018/03/21 Javascript
nodejs实现一个word文档解析器思路详解
2018/08/14 NodeJs
vue安装和使用scss及sass与scss的区别详解
2018/10/15 Javascript
JS设置自定义快捷键并实现图片上下左右移动
2019/10/17 Javascript
JavaScript indexOf()原理及使用方法详解
2020/07/09 Javascript
[46:55]完美世界DOTA2联赛决赛 FTD vs Phoenix 第三场 11.08
2020/11/11 DOTA
Python的Bottle框架中获取制定cookie的教程
2015/04/24 Python
Python过滤列表用法实例分析
2016/04/29 Python
Python解析excel文件存入sqlite数据库的方法
2016/11/15 Python
python中redis的安装和使用
2016/12/04 Python
Python使用matplotlib填充图形指定区域代码示例
2018/01/16 Python
Linux下python3.7.0安装教程
2018/07/30 Python
python实现的分层随机抽样案例
2020/02/25 Python
Python爬取365好书中小说代码实例
2020/02/28 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
tensorflow下的图片标准化函数per_image_standardization用法
2020/06/30 Python
如何解决python多种版本冲突问题
2020/10/13 Python
业务助理岗位职责
2013/11/18 职场文书
经济与贸易专业应届生求职信
2013/11/19 职场文书
高中毕业自我鉴定
2013/12/19 职场文书
交通事故赔偿协议书
2014/04/15 职场文书
护理目标管理责任书
2014/07/25 职场文书
考试作弊万能检讨书
2014/10/19 职场文书
英语感谢信范文
2015/01/20 职场文书
小英雄雨来观后感
2015/06/09 职场文书
收入证明范本
2015/06/12 职场文书
浅谈如何提高PHP代码的质量
2021/05/28 PHP