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的开源工具PACKER2.0.2
Nov 04 Javascript
JavaScript学习笔记(十七)js 优化
Feb 04 Javascript
Google的跟踪代码 动态加载js代码方法应用
Nov 12 Javascript
javascript数组去重3种方法的性能测试与比较
Mar 26 Javascript
javascript-表格排序(降序/反序)实现介绍(附图)
May 30 Javascript
javascript 函数及作用域总结介绍
Nov 12 Javascript
Javascript 实现复制(Copy)动作方法大全
Jun 20 Javascript
jQuery在线选座位插件seat-charts特效代码分享
Aug 27 Javascript
JS常用加密编码与算法实例总结
Dec 22 Javascript
深入理解React高阶组件
Sep 28 Javascript
vue+element-ui动态生成多级表头的方法
Aug 28 Javascript
JavaScript 对引擎、运行时、调用堆栈的概述理解
Oct 22 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
PHP获取网站域名和地址的代码
2008/08/17 PHP
php 中英文语言转换类
2011/09/07 PHP
实测在class的function中include的文件中非php的global全局环境
2013/07/15 PHP
YII2.0之Activeform表单组件用法实例
2016/01/09 PHP
学习ExtJS table布局
2009/10/08 Javascript
JQuery获取浏览器窗口内容部分高度的代码
2012/02/24 Javascript
jQuery 绑定事件到动态创建的元素上的方法实例
2013/08/18 Javascript
鼠标选择动态改变网页背景颜色的JS代码
2013/12/10 Javascript
js跨域问题浅析及解决方法优缺点对比
2014/11/08 Javascript
jQuery插件PageSlide实现左右侧栏导航菜单
2015/04/12 Javascript
BootStrap的弹出框(Popover)支持鼠标移到弹出层上弹窗层不隐藏的原因及解决办法
2016/04/03 Javascript
浅析$(function) ready和onload 的区别
2016/09/03 Javascript
jQuery实现可展开折叠的导航效果示例
2016/09/12 Javascript
简单谈谈JS数组中的indexOf方法
2016/10/13 Javascript
javascript十六进制数字和ASCII字符之间的转换方法
2016/12/27 Javascript
angular指令笔记ng-options的使用方法
2017/09/18 Javascript
js和jQuery以及easyui实现对下拉框的指定赋值方法
2018/01/23 jQuery
Vue.js特性Scoped Slots的浅析
2019/02/20 Javascript
CKeditor富文本编辑器使用技巧之添加自定义插件的方法
2019/06/14 Javascript
windows系统中python使用rar命令压缩多个文件夹示例
2014/05/06 Python
python开发之字符串string操作方法实例详解
2015/11/12 Python
Python导入模块时遇到的错误分析
2017/08/30 Python
python线程中同步锁详解
2018/04/27 Python
python 实现多线程下载视频的代码
2019/11/15 Python
Django+Uwsgi+Nginx如何实现生产环境部署
2020/07/31 Python
python软件测试Jmeter性能测试JDBC Request(结合数据库)的使用详解
2021/01/26 Python
基于tensorflow __init__、build 和call的使用小结
2021/02/26 Python
英国女装网上商店:I Saw It First
2018/10/18 全球购物
BISSELL官网:北美吸尘器第一品牌
2019/03/14 全球购物
儿媳婚宴答谢词
2014/01/14 职场文书
机电一体化专业毕业生自荐信
2014/06/19 职场文书
客户答谢会活动方案
2014/08/31 职场文书
小学红领巾广播稿(3篇)
2014/09/13 职场文书
公司证明怎么写
2014/09/22 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
军训结束新闻稿
2015/07/17 职场文书