<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Sealyu

    --- 博客已遷移至: http://www.sealyu.com/blog

      BlogJava :: 首頁(yè) :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評(píng)論 :: 0 Trackbacks
    使用HTML元素的style.left,style.top,style.width,style.height以及width,height屬性,都 不能獲得元素的真正位置與大小,這些屬性取出來(lái)的都是原來(lái)的設(shè)置值,例如<table  id="table1" width="500">,那么通過(guò)document.getElementById("table1").width取出來(lái)的值永遠(yuǎn)都是500, 而不管這個(gè)表格是否已經(jīng)被撐大了;同時(shí),通過(guò)document.getElementById("table1").style.left獲得的值是空 的,因?yàn)闆](méi)有設(shè)置這個(gè)值。
    要取得HTML元素的真正位置與大小,只能通過(guò) offsetLeft,offsetTop,clientWidth,clientHeight,offsetWidth,offsetHeight屬 性,其中offsetLeft與offsetTop分別是當(dāng)前元素在父元素內(nèi)的相對(duì)左坐標(biāo)與相對(duì)頂坐標(biāo),要取得絕對(duì)坐標(biāo),還需要用到 offsetParent屬性,改屬性取得當(dāng)前元素的父元素。要取得絕對(duì)坐標(biāo),就必須依次獲得父元素的相對(duì)坐標(biāo),直到父元素為空,然后把所有相對(duì)坐標(biāo)加起 來(lái),得到當(dāng)前元素的絕對(duì)坐標(biāo)。
    最常見的是日期選擇框,當(dāng)點(diǎn)擊按鈕時(shí)彈出日期選擇框總是在按鈕的旁邊,這個(gè)選擇框的坐標(biāo),就是根據(jù)按鈕的坐標(biāo)以及按鈕的offsetWidth,offsetHeight來(lái)取得的。

    -----------------------------------------------------------------------------------------------------------------------------
    HTMLElement.offsetLeft
    HTMLElement.offsetTop
    但 是需要注意的是,這兩個(gè)屬性所儲(chǔ)存的數(shù)值并不是該元素相對(duì)整個(gè)瀏覽器畫布的絕對(duì)位置,而是相對(duì)于其父元素位置的相對(duì)位置,也就是說(shuō)這兩個(gè)數(shù)值得到的是以其 父元素左上角為(0,0)點(diǎn)從而計(jì)算出的數(shù)值。那么如何得到一個(gè)HTML元素的絕對(duì)位置呢,前一陣找到的一個(gè)比較好的函數(shù),分享一下:
    //獲取元素的縱坐標(biāo)
    function getTop(e){
    var offset=e.offsetTop;
    if(e.offsetParent!=null) offset+=getTop(e.offsetParent);
    return offset;
    }
    //獲取元素的橫坐標(biāo)
    function getLeft(e){
    var offset=e.offsetLeft;
    if(e.offsetParent!=null) offset+=getLeft(e.offsetParent);
    return offset;
    }
    其 原理就是利用HTMLElement.offsetParent屬性,如果當(dāng)前元素的父元素不是空(null),則在原本的offsetTop基礎(chǔ)上加上 當(dāng)前的offsetTop,然后繼續(xù)獲取父元素的父元素的offsetTop,再將其加之,最終遞歸出該元素相對(duì)于整個(gè)瀏覽器畫布的縱坐標(biāo)。橫坐標(biāo)亦 然。

    ------------------------------------------------------------------------------------------------------------------------

    <script type="text/javascript">
    <!--
    function GetElCoordinate(e)
    {
        var t = e.offsetTop;
        var l = e.offsetLeft;
        var w = e.offsetWidth;
        var h = e.offsetHeight;
        while (e = e.offsetParent)
        {
            t += e.offsetTop;
            l += e.offsetLeft;
        }
        return {
            top: t,
            left: l,
            width: w,
            height: h,
            bottom: t + h,
            right: l + w
        }
    }

    var o = GetElCoordinate(document.getElementById("text-div"));

    document.getElementById("test-div").style.left = parseInt(o.left)+"px";
    document.getElementById("test-div").style.top = parseInt(o.bottom)+"px";
    //-->
    </script>

    posted on 2009-02-24 16:16 seal 閱讀(2798) 評(píng)論(0)  編輯  收藏 所屬分類: web
    主站蜘蛛池模板: 人人狠狠综合久久亚洲高清| 一二三四在线观看免费高清中文在线观看| 日韩在线天堂免费观看| 亚洲国产精品日韩在线| 国产高清不卡免费在线| 亚洲六月丁香六月婷婷蜜芽| 8x8×在线永久免费视频| 99久久亚洲精品无码毛片| 久久久免费精品re6| 亚洲视频免费在线看| av免费不卡国产观看| 亚洲一区二区三区写真| 国产在线98福利播放视频免费| 亚洲AV无码片一区二区三区 | 日韩电影免费在线观看网址| 国产免费人人看大香伊| 日韩在线观看视频免费| 亚洲综合伊人久久大杳蕉| 久久国产精品免费网站| 亚洲人6666成人观看| 成人黄18免费视频| 猫咪www免费人成网站| 亚洲精品无码永久中文字幕| 最近中文字幕完整版免费高清| 亚洲宅男精品一区在线观看| 国产精品成人无码免费| a级毛片毛片免费观看久潮 | 免费jjzz在线播放国产| 一级做受视频免费是看美女 | 91精品啪在线观看国产线免费| 亚洲av无码电影网| 国产乱子影视频上线免费观看| h在线看免费视频网站男男| 久久久国产精品亚洲一区| 嫩草影院在线免费观看| 国产特黄一级一片免费| 亚洲精品资源在线| 免费一级做a爰片久久毛片潮喷| 三年片在线观看免费大全电影| 亚洲中文字幕无码中文字| 亚洲熟妇av一区二区三区|