<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 :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      618 隨筆 :: 87 文章 :: 225 評論 :: 0 Trackbacks
    使用HTML元素的style.left,style.top,style.width,style.height以及width,height屬性,都 不能獲得元素的真正位置與大小,這些屬性取出來的都是原來的設置值,例如<table  id="table1" width="500">,那么通過document.getElementById("table1").width取出來的值永遠都是500, 而不管這個表格是否已經被撐大了;同時,通過document.getElementById("table1").style.left獲得的值是空 的,因為沒有設置這個值。
    要取得HTML元素的真正位置與大小,只能通過 offsetLeft,offsetTop,clientWidth,clientHeight,offsetWidth,offsetHeight屬 性,其中offsetLeft與offsetTop分別是當前元素在父元素內的相對左坐標與相對頂坐標,要取得絕對坐標,還需要用到 offsetParent屬性,改屬性取得當前元素的父元素。要取得絕對坐標,就必須依次獲得父元素的相對坐標,直到父元素為空,然后把所有相對坐標加起 來,得到當前元素的絕對坐標。
    最常見的是日期選擇框,當點擊按鈕時彈出日期選擇框總是在按鈕的旁邊,這個選擇框的坐標,就是根據按鈕的坐標以及按鈕的offsetWidth,offsetHeight來取得的。

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

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

    <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) 評論(0)  編輯  收藏 所屬分類: web
    主站蜘蛛池模板: 国产aⅴ无码专区亚洲av| 你懂的在线免费观看| 亚洲网红精品大秀在线观看| 国产成人综合久久精品免费 | 亚洲天堂免费在线| 中文在线观看国语高清免费| 亚洲男同gay片| 亚洲天堂一区二区三区| 亚洲VA中文字幕无码毛片| 亚洲国产精品第一区二区三区| 美女视频黄免费亚洲| 久久久久成人精品免费播放动漫| 一级特黄a免费大片| 无码亚洲成a人在线观看| 亚洲日本国产综合高清| 久久久久亚洲精品天堂| 久久亚洲国产中v天仙www| 久久亚洲欧洲国产综合| mm1313亚洲精品无码又大又粗| 最近的免费中文字幕视频| 精品久久久久久久久免费影院| 84pao强力永久免费高清| 国产成人久久AV免费| 大地资源在线资源免费观看| 国产精品内射视频免费| 成人免费网站视频www| 在线亚洲v日韩v| 国产区图片区小说区亚洲区| 校园亚洲春色另类小说合集| 亚洲s码欧洲m码吹潮| 亚洲av永久中文无码精品综合| 亚洲国产乱码最新视频| 亚洲 日韩经典 中文字幕 | 免费人成在线观看网站品爱网| 中文字幕免费在线观看动作大片| 乱人伦中文视频在线观看免费| 色婷婷综合缴情综免费观看 | 免费涩涩在线视频网| 永久免费bbbbbb视频| 国产成人涩涩涩视频在线观看免费| 国产无遮挡又黄又爽免费视频|