浏览 3445 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2008-11-24
最后修改:2008-11-27
/* 根据id判断位置,返回X,Y轴的坐标 */ function getElementPos(elementId){ var ua = navigator.userAgent.toLowerCase(); var isOpera = (ua.indexOf('opera') != -1); var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof var el = document.getElementById(elementId); if (el.parentNode === null || el.style.display == 'none') { return false; } var parent = null; var pos = []; var box; if (el.getBoundingClientRect) // IE { box = el.getBoundingClientRect(); var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop); var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft); return { x: box.left + scrollLeft, y: box.top + scrollTop }; } else if (document.getBoxObjectFor) // gecko { box = document.getBoxObjectFor(el); var borderLeft = (el.style.borderLeftWidth) ? parseInt(el.style.borderLeftWidth) : 0; var borderTop = (el.style.borderTopWidth) ? parseInt(el.style.borderTopWidth) : 0; pos = [box.x - borderLeft, box.y - borderTop]; } else // safari & opera { pos = [el.offsetLeft, el.offsetTop]; parent = el.offsetParent; if (parent != el) { while (parent) { pos[0] += parent.offsetLeft; pos[1] += parent.offsetTop; parent = parent.offsetParent; } } if (ua.indexOf('opera') != -1 || (ua.indexOf('safari') != -1 && el.style.position == 'absolute')) { pos[0] -= document.body.offsetLeft; pos[1] -= document.body.offsetTop; } } if (el.parentNode) { parent = el.parentNode; } else { parent = null; } while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML') { // account for any scrolled ancestors pos[0] -= parent.scrollLeft; pos[1] -= parent.scrollTop; if (parent.parentNode) { parent = parent.parentNode; } else { parent = null; } } return { x: pos[0], y: pos[1] }; } /* 函数功能: 兼容IE和FF返回目标对象包含边框的left、top、width、height值。其中left、top是相对于document.body的坐标。 需要参数1个: [DOM]o=[DOM]要取值的对象。 */ function getLTWH(id){ o = jQuery("#"+id); if (o == null) { return; } function getCurrentStyle(style){ var number = parseInt(o.currentStyle[style]); return isNaN(number) ? 0 : number; } function getComputedStyle(style){ return parseInt(document.defaultView.getComputedStyle(o, null).getPropertyValue(style)); } var oLTWH = { "left": o.offsetLeft, "top": o.offsetTop, "width": o.offsetWidth, "height": o.offsetHeight }; while (true) { o = o.offsetParent; if (o == (document.body && null)) break; oLTWH.left += o.offsetLeft; oLTWH.top += o.offsetTop; if (jQuery.browser.msie && jQuery.browser.version == "6.0") { oLTWH.left += getCurrentStyle("borderLeftWidth"); oLTWH.top += getCurrentStyle("borderTopWidth"); } else { oLTWH.left += getComputedStyle("border-left-width"); oLTWH.top += getComputedStyle("border-top-width"); } } return oLTWH; } function getltByWindow(){ var windowWidth, windowHeight;// 窗口的高和宽 // 取得窗口的高和宽 if (self.innerHeight) { windowWidth = self.innerWidth; windowHeight = self.innerHeight; } else if (document.documentElement && document.documentElement.clientHeight) { windowWidth = document.documentElement.clientWidth; windowHeight = document.documentElement.clientHeight; } else if (document.body) { windowWidth = document.body.clientWidth; windowHeight = document.body.clientHeight; } var loc = { left: windowWidth, top: windowHeight }; return loc; } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-25
[flash=200,200][/flash]x-small][align=right][/align][/color[img][/img]
引用 [u][i][/i][b][/b]][img][/img][color=orange]
|
|
返回顶楼 | |
发表时间:2008-11-25
fsz521job 写道 [flash=200,200][/flash]Java代码 x-small][align=right][/align][/color引用 不懂你什么意思?我可以把代码作为附件下载的,对了,最后一行可以换做documenet.getElementById() |
|
返回顶楼 | |