JavaScript CSS修改學(xué)習(xí)第一章 查找位置
在所有的瀏覽器里面元素的offsetTop和offsetLeft兩個(gè)屬性都是很有用的。他們會(huì)給出你元素相對(duì)于父元素的坐標(biāo)位置。
這段代碼會(huì)向上查找offsetParent,然后添加offsetTop和offsetLeft。最終無(wú)論offsetParent在哪,他都會(huì)給出你元素在屏幕上的真正坐標(biāo)。
解釋
這段代碼非常簡(jiǎn)單。先傳入要計(jì)算的元素,然后設(shè)置變量curleft和curtop為0。
var curleft = curtop = 0;
如果瀏覽器支持offsetParent:
每次我們找到一個(gè)新的對(duì)象的時(shí)候,把他的offsetTop和offsetLeft加到curtop和curleft上:
curleft += obj.offsetLeft;
curtop += obj.offsetTop;
小技巧:返回'='的值
下面就是這個(gè)技巧:
這個(gè)不是表達(dá)式錯(cuò)誤。我不想用'=='來(lái)比較obj和obj.offsetParent(那也沒(méi)有用,因?yàn)橐粋€(gè)元素肯定和他的父元素不相等)。
所以我用'='來(lái)把obj.offsetParent的值傳遞給obj。在這里我對(duì)這個(gè)技巧有詳細(xì)的解釋。
簡(jiǎn)單的返回
這個(gè)循環(huán)會(huì)當(dāng)元素沒(méi)有了offsetParent的時(shí)候結(jié)束。當(dāng)offsetParent存在的時(shí)候,就依然會(huì)把offsetLeft加到curleft上,把offsetTop加到curtop上。
當(dāng)循環(huán)技術(shù)的時(shí)候,我們就把坐標(biāo)返回給調(diào)用這個(gè)函數(shù)的程序。
翻譯地址:http://www.quirksmode.org/js/findpos.html
轉(zhuǎn)載請(qǐng)保留以下信息
作者:北玉(tw:@rehawk)
相關(guān)文章
javascript學(xué)習(xí)筆記(十三) js閉包介紹(轉(zhuǎn))
閉包(closure)是Javascript語(yǔ)言的一個(gè)難點(diǎn),也是它的特色,很多高級(jí)應(yīng)用都要依靠閉包實(shí)現(xiàn)2012-06-06setInterval()和setTimeout()的用法和區(qū)別示例介紹
setInterval()和setTimeout()想必大家并不陌生吧,接觸js的朋友都知道的,不過(guò)還是有一些新手朋友對(duì)兩者的用法不是很熟悉,下面簡(jiǎn)要的為大家介紹下2013-11-11javascript七大數(shù)據(jù)類(lèi)型詳解
這篇文章主要為大家介紹了 javascript七大數(shù)據(jù)類(lèi)型,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來(lái)幫助2021-12-12Javascript實(shí)現(xiàn)的SHA-256加密算法完整實(shí)例
這篇文章主要介紹了Javascript實(shí)現(xiàn)的SHA-256加密算法,以完整實(shí)例形式分析了JavaScript實(shí)現(xiàn)SHA-256加密的具體步驟與相關(guān)技巧,需要的朋友可以參考下2016-02-02簡(jiǎn)略說(shuō)明Javascript中的= =(等于)與= = =(全等于)區(qū)別
本篇文章簡(jiǎn)略說(shuō)明了Javascript中的= =(等于)與= = =(全等于)區(qū)別,有需要的朋友可以參考一下2013-04-04JavaScript中g(shù)etUTCSeconds()方法的使用詳解
這篇文章主要介紹了JavaScript中g(shù)etUTCSeconds()方法的使用詳解,是JS入門(mén)學(xué)習(xí)中的基礎(chǔ)知識(shí),需要的朋友可以參考下2015-06-06JavaScript入門(mén)教程(12) js對(duì)象化編程
關(guān)于對(duì)象化編程的語(yǔ)句 現(xiàn)在我們有實(shí)力學(xué)習(xí)以下關(guān)于對(duì)象化編程,但其實(shí)屬于上一章的內(nèi)容了。2009-01-01如何做到打開(kāi)一個(gè)頁(yè)面,過(guò)幾分鐘自動(dòng)轉(zhuǎn)到另一頁(yè)面
如何做到打開(kāi)一個(gè)頁(yè)面,過(guò)幾分鐘自動(dòng)轉(zhuǎn)到另一頁(yè)面...2007-04-04JS 事件綁定、事件監(jiān)聽(tīng)、事件委托詳細(xì)介紹
這篇文章主要介紹了JS 事件綁定、事件監(jiān)聽(tīng)、事件委托詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下2016-09-09