【翻譯作品】JavaScript CSS修改學習第一章:尋找位置

來源:互聯網
上載者:User
文章目錄
  • 小技巧:返回'='的值
  • 簡單的返回

在這一章我會給出尋找頁面上的元素位置的代碼。他能協助你找到真正的位置,假如你改變了視窗的尺寸,然後再次運行代碼,也會告訴你新的位置。

 

offset

在所有的瀏覽器裡面元素的offsetTop和offsetLeft兩個屬性都是很有用的。他們會給出你元素相對於父元素的座標位置。

這段代碼會向上尋找offsetParent,然後添加offsetTop和offsetLeft。最終無論offsetParent在哪,他都會給出你元素在螢幕上的真正座標。

 

解釋

這段代碼非常簡單。先傳入要計算的元素,然後設定變數curleft和curtop為0。

function findPos(obj) {var curleft = curtop = 0;

如果瀏覽器支援offsetParent:

if (obj.offsetParent) {

每次我們找到一個新的對象的時候,把他的offsetTop和offsetLeft加到curtop和curleft上:

do {curleft += obj.offsetLeft;curtop += obj.offsetTop;

小技巧:返回'='的值

下面就是這個技巧:

} while (obj = obj.offsetParent);

這個不是運算式錯誤。我不想用'=='來比較obj和obj.offsetParent(那也沒有用,因為一個元素肯定和他的父元素不相等)。

所以我用'='來把obj.offsetParent的值傳遞給obj。在這裡我對這個技巧有詳細的解釋。

簡單的返回

這個迴圈會當元素沒有了offsetParent的時候結束。當offsetParent存在的時候,就依然會把offsetLeft加到curleft上,把offsetTop加到curtop上。

當迴圈技術的時候,我們就把座標返回給調用這個函數的程式。

return [curleft,curtop];}

 

翻譯地址:http://www.quirksmode.org/js/findpos.html

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.