四虎精品视频-四虎精品成人免费网站-四虎黄色网-四虎国产视频-国产免费91-国产蜜臀97一区二区三区

javascript 精確獲取頁(yè)面元素的位置

復(fù)制代碼 代碼如下:
//取得元素x坐標(biāo)
function pageX(elem) {
return elem.offsetParent?(elem.offsetLeft+pageX(elem.offsetParent)):elem.offsetLeft;
}
//取得元素y坐標(biāo)
function pageY(elem) {
return elem.offsetParent?(elem.offsetTop+pageY(elem.offsetParent)):elem.offsetTop;
}

貌似這位大神在出這本書時(shí)比較趕,有許多紕漏,最后大神也發(fā)覺這兩個(gè)函數(shù)有問題,并沒有把它們運(yùn)用到JQuery中。由于是用累加的方式去計(jì)算,只要一個(gè)元素出現(xiàn)問題,就有可能層層被大,因此我在精確獲取樣式屬性時(shí)就摒棄這種方法。主要誤算參照大神的結(jié)論:
Handling table border offsets.
Fixed positioned elements.
Scroll offsets within another element.
Borders of overflowed parent elements.
Miscalculation of absolutely positioned elements.

隨著新銳瀏覽器都支持IE的getBoundingClientRect方法,我們得以用更簡(jiǎn)單更快捷更安全的方法來(lái)定位頁(yè)面元素。getBoundingClientRect返回的是一個(gè)集合,分別為元素在瀏覽器可視區(qū)的四個(gè)角的坐標(biāo)。

不過它在IE的標(biāo)準(zhǔn)模式存在一個(gè)奇怪的問題,html元素是有border的,默認(rèn)是2px,并且是不可修改的;怪癖模式是沒有的。詳見http://msdn.microsoft.com/en-us/library/ms536433(VS.85).ASPx

This method retrieves an object that exposes the left, top, right, and bottom coordinates of the union of rectangles relative to the client's upper-left corner. In Microsoft InterNET Explorer 5, the window's upper-left is at 2,2 (pixels) with respect to the true client.

我們做一些測(cè)試(請(qǐng)分別在IE6與IE8中進(jìn)行):

1、標(biāo)準(zhǔn)模式,沒有重設(shè)html的border

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
2、標(biāo)準(zhǔn)模式,重設(shè)html的border

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
3、怪癖模式,沒有重設(shè)html的border

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
4、怪癖模式,重設(shè)html的border

[Ctrl+A 全選 注:如需引入外部Js需刷新才能執(zhí)行]
John Resig給出的方案就是用clientTop,clientLeft作減值。以下函數(shù)就是從JQuery中摳出來(lái),就后就用它獲取頁(yè)面元素的坐標(biāo),比offset大法安全多了。
復(fù)制代碼 代碼如下:
var getCoords = function(el){
var box = el.getBoundingClientRect(),
doc = el.ownerDocument,
body = doc.body,
html = doc.documentElement,
clientTop = html.clientTop || body.clientTop || 0,
clientLeft = html.clientLeft || body.clientLeft || 0,
top = box.top + (self.pageYOffset || html.scrollTop || body.scrollTop ) - clientTop,
left = box.left + (self.pageXOffset || html.scrollLeft || body.scrollLeft) - clientLeft
return { 'top': top, 'left': left };
};

其中self.pageYOffset相當(dāng)于window.self.pageYOffset,是火狐的一個(gè)屬性,相當(dāng)于document.body.scrollTop。以下是它的定義:
Definition: The pageYOffset property is used to determine the Y coordinate of the scroll position in some browsers. This is not a reserved word so you can declare your own variable or function called pageYOffset but if you do then you will not be able to find or alter the scroll position of a window in some browsers

JavaScript技術(shù)javascript 精確獲取頁(yè)面元素的位置,轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 男同性恋免费视频| 电影《塔蒂亚娜1》演员表| 小学毕业老师解散班级群寄语| 大学英语综合教程1答案| 邓佳佳| busty buffy| 铁探粤语版在线观看| hd经典复古性mature| 田教授的28个保姆演员表| 寄宿生韩剧全集观看| 电影《48天》免费观看全集| 女同恋性吃奶舌吻完整版| 核舟记课堂笔记| 成龙| 浙江卫视是几台| 我落泪情绪零碎周杰伦歌词| 亚洲 在线| 小学生必用头像| 梁洪硕| 颂赞诗歌| 大兵相声小品蠢得死| 出位江湖| 经视直播| 驿路梨花思维导图| 老片.经典.hd.videos| 赵国华| 天下第一楼剧情介绍| 山上的小屋 残雪原文| 最后的武士| 在线播放国内自拍情侣酒店| 唐砖演员表| 冥界警局| 蛇魔女大闹都市| 郭柯彤| 非法制裁| 小孩脸上一块白一块白是什么原因| 扭曲的欲望| 我的学生妈妈| 小红书如何开通店铺| 电影同船爱歌| 扭曲的欲望|