Javascript拖拽&拖放系列文章2之offsetLeft、offsetTop、offsetWidth、offsetHeight属性javascript
来源:互联网 发布:电脑怎么更换网络节点 编辑:程序博客网 时间:2024/06/10 23:19
在阅读本文之前,请先看一看第一篇文章javascript拖拽&拖放系列文章1之offsetparent属性,因为循序渐进是一个很好的习惯,值得提倡。
好了,看看我们今天的内容吧。
首先让我们先看一看element.offsetleft属性。
支持的浏览器:internet explorer 4.0+,mozilla 1.0+,netscape 6.0+,opera 7.0+,safari 1.0+
定义:返回一个像素数值,它表示当前元素的左边缘到它的offsetparent属性返回的对象左边缘的偏移量。
句法:
leftdis = element.offsetleft
offsetleft属性在internet explorer中的实现存在bug,无论当前元素的offsetparent属性取值如何,它总是以body元素为参照物来计算offsetleft。幸运的是,这个bug在intern explorer 8 beta 1中已经修复。仍然需要注意,ie会从body元素的left-border为标准开始计算offsetleft,而其他的浏览器将从left-margin开始计算。
测试代码1:
code
doctype html public "-//w3c//dtd html 4.01//en" "http://www.w3.org/tr/html4/strict.dtd">
html>
head>
meta http-equiv="content-type" content="text/html; charset=utf-8" />
title>untitled documenttitle>
style type="text/css">
body{
border:1px solid red;
margin-left:0px;
}
#parent{
position:relative;
left:25px;
top:0px;
border:1px solid black;
}
style>
script type="text/javascript" language="javascript">
function offset_init(){
var pelement = document.getelementbyid("sonobj");
parentobj = pelement.offsetparent;
var ioffsetleft=pelement.offsetleft;
alert(parentobj.tagname);
alert(ioffsetleft);
}
script>
head>
body onload="offset_init()">
div id="parent">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
span id="sonobj">测试offsetparent属性span>
div>
body>
html>
在ie中,运行这段代码后,会依次弹出两个窗口,分别显示“div”、“437”,分别表示offsetparent和offsetleft。在下图中,红色边框代表body元素,黑色边框代表div元素。从而证明即使在ie中,offsetparent不是body元素,offsetleft的计算也以body元素为标准。
图一:在ie7中的结果
在ie 8 beta 1中这bug已经被修复,将分别返回“div”,“411”。已经和其他浏览器一样符合了标准。
图二:在ietester中对ie 8 beta 1的测试结果
注:ietester是一款非常不错的免费网页测试工具,可以代表ie的各个版本来渲染网页。最新版本0.2.3可以在其官方网站http://www.my-debugbar.com/wiki/ietester/homepage 下载。个人认为每一个web开发者都应该拥有一个。
仍然需要注意的是,如果在一个行内标签(作为offsetparent)内嵌入一个标签(作为当前元素),类此如下代码:
code
span id="parent">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
div id="sonobj">测试offsetparent属性div>
span>
将引起混乱,因为各个浏览器的渲染各不相同(webkit内核浏览器将会把offsetparent属性指向body元素,而且ie对offsetleft取值不同),在行内标签内嵌入行内标签这种情况下,问题尤为明显(各个浏览器对offsetleft属性的取值就都有差异了,无理可循)。
好了,offsetleft就讲完了,我们继续看offsettop属性。
支持的浏览器:internet explorer 4.0+,mozilla 1.0+,netscape 6.0+,opera 7.0+,safari 1.0+
定义:
返回一个数值,指明了当前元素的上边缘到其offsettop属性返回的对象的上边缘的距离。
句法:
topdis = element.offsettop
前面对于offsetleft的bug也存在于offsettop属性中,同样,这个bug在ie 8 beta 1中也已经修复。
图三:在ie7及以下版本中,offsetsettop属性的bug。
当然也不要在内联标签内嵌入标签,因为webkit内核浏览器会错误解释offsetparent属性。
offsetwidth属性
支持的浏览器:internet explorer 4.0+,mozilla 1.0+,netscape 6.0+,opera 7.0+,safari 1.0+
定义:
当前元素的宽度。
句法:
elementwidth = element.offsetwidth
需要指出的是,offsetwidth属性所指的宽度是当前元素的width+padding+border+margin的总和。
offsetheight属性
支持的浏览器:internet explorer 4.0+,mozilla 1.0+,netscape 6.0+,opera 7.0+,safari 1.0+
定义:
当前元素的高度。
句法:
elementheight = element.offsetheight
同样,offsetwidth属性所指的高度是当前元素的height+padding+border+margin的总和。
以上所说的四个属性再加上上一篇文章的offsetparent属性其实都不是dom规范的一部分,但是目前的浏览器都实现了它们,这几个属性也是实现javascript拖拽功能的核心元素。因此一定要深入理解它们。
下一篇将讲讲事件对象中的相关属性。
======================================================
在最后,我邀请大家参加新浪APP,就是新浪免费送大家的一个空间,支持PHP+MySql,免费二级域名,免费域名绑定 这个是我邀请的地址,您通过这个链接注册即为我的好友,并获赠云豆500个,价值5元哦!短网址是http://t.cn/SXOiLh我创建的小站每天访客已经达到2000+了,每天挂广告赚50+元哦,呵呵,饭钱不愁了,\(^o^)/
- Javascript拖拽&拖放系列文章2之offsetLeft、offsetTop、offsetWidth、offsetHeight属性javascript
- 【转】Javascript拖拽&拖放系列文章2之offsetLeft、offsetTop、offsetWidth、offsetHeight属性
- Javascript拖拽系列文章2之offsetLeft、offsetTop、offsetWidth
- offsetTop、offsetLeft、offsetWidth、offsetHeight
- offsetTop、offsetLeft、offsetWidth、offsetHeight
- offsetLeft、offsetTop、offsetWidth,offsetHeight
- offsetTop、offsetLeft、offsetWidth、offsetHeight
- offsetTop、offsetLeft、offsetWidth、offsetHeight(转帖)
- offsetTop、offsetLeft 、offsetWidth、offsetHeight 算法
- 关于offsetWidth, offsetHeight,offsetTop, offsetLeft
- offsetWidth、offsetHeight、offsetLeft、offsetTop、offsetParent
- offsetLeft、offsetTop、offsetWidth、offsetHeight……的属性
- Javascript拖拽&拖放系列文章1之offsetParent属性javascript
- offsetTop、offsetLeft、offsetWidth、offsetHeight、style中的样式
- offsetTop、 offsetLeft、offsetWidth、offsetHeight的用法
- offsetTop、offsetLeft、offsetWidth、offsetHeight、offsetParent、offsetrect
- offsetLeft,offsetTop,offsetWidth,offsetHeight的使用
- offsetLeft offsetHeight offsetTop offsetWidth offsetParent学习笔记
- computer organization and design notes(4)-MIPS寻址
- JavaScript blog式日历控件javascript
- 关于Javascript模块化和命名空间管理javascript
- 精通Javascript系列之数值javascript
- Asp.net Ajax:我可以用javascript做些什么?javascript
- Javascript拖拽&拖放系列文章2之offsetLeft、offsetTop、offsetWidth、offsetHeight属性javascript
- 一个轻量级的javascript库javascript
- 车联网商业模式总结
- Javascript 正则表达式javascript
- 如何利用IE进行JavaScript脚本调试javascript
- javascript Date类的扩展javascript
- 在Visual Studio2005 中调试JavaScriptjavascript
- Javascript基础 (一)类型javascript
- Javascript闭包演示javascript