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 相关文章推荐
通过jquery实现tab标签浏览效果
Feb 20 Javascript
javascript 学习之旅 (2)
Feb 05 Javascript
理解Javascript_12_执行模型浅析
Oct 18 Javascript
JSON为什么那样红为什么要用json(另有洞天)
Dec 26 Javascript
JavaScript匿名函数用法分析
Feb 13 Javascript
详解Angular2中的编程对象Observable
Sep 17 Javascript
laravel5.3 vue 实现收藏夹功能实例详解
Jan 21 Javascript
基于angular6.0实现的一个组件懒加载功能示例
Apr 12 Javascript
vue :src 文件路径错误问题的解决方法
May 15 Javascript
.vue文件 加scoped 样式不起作用的解决方法
May 28 Javascript
node.js之基础加密算法模块crypto详解
Sep 11 Javascript
如何提升vue.js中大型数据的性能
Jun 21 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
ThinkPHP控制器间实现相互调用的方法
2014/10/31 PHP
php单例模式实现方法分析
2015/03/14 PHP
PHP使用curl模拟post上传及接收文件的方法
2016/03/04 PHP
laravel学习教程之存取器
2016/07/30 PHP
laravel框架模板之公共模板、继承、包含实现方法分析
2019/08/30 PHP
js活用事件触发对象动作
2008/08/10 Javascript
Js 订制自己的AlertBox(信息提示框)
2009/01/09 Javascript
jquery事件机制扩展插件 jquery鼠标右键事件
2011/12/21 Javascript
表格单元格交错着色实现思路及代码
2013/04/01 Javascript
node.js中的fs.exists方法使用说明
2014/12/17 Javascript
学习JavaScript设计模式(策略模式)
2015/11/26 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
微信页面倒计时代码(解决safari不兼容date的问题)
2016/12/13 Javascript
为输入框加入数字js校验代码分享
2017/11/02 Javascript
js解决软键盘遮挡输入框的问题分享
2017/12/19 Javascript
vue实现前端列表多条件筛选
2020/10/26 Javascript
你不知道的SpringBoot与Vue部署解决方案
2020/11/09 Javascript
[42:48]完美世界DOTA2联赛PWL S3 Magma vs INK ICE 第二场 12.11
2020/12/16 DOTA
python实现数独算法实例
2015/06/09 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
django从请求到响应的过程深入讲解
2018/08/01 Python
python requests包的request()函数中的参数-params和data的区别介绍
2020/05/05 Python
Pandas读取csv时如何设置列名
2020/06/02 Python
python打包多类型文件的操作方法
2020/09/21 Python
Python基于内置函数type创建新类型
2020/10/22 Python
python Xpath语法的使用
2020/11/26 Python
python对输出的奇数偶数排序实例代码
2020/12/04 Python
HTML5 Canvas中绘制椭圆的4种方法
2015/04/24 HTML / CSS
ESDlife健康生活易:身体检查预订、搜寻及比较
2019/05/10 全球购物
简单叙述一下MYSQL的优化
2016/05/09 面试题
早读迟到检讨书
2014/01/24 职场文书
物业管理毕业生的自我评价
2014/02/17 职场文书
求职信内容怎么写
2014/05/26 职场文书
服务标语大全
2014/06/18 职场文书
房地产工程部经理岗位职责
2015/04/09 职场文书
办公室规章制度范本
2015/08/04 职场文书