<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
    主站蜘蛛池模板: 国产精成人品日日拍夜夜免费| 免费人成网站在线观看10分钟| 久久精品国产亚洲综合色| 8888四色奇米在线观看免费看| 亚洲av产在线精品亚洲第一站| 日本无卡码免费一区二区三区| 97在线视频免费公开视频| 亚洲熟妇色自偷自拍另类| 国产zzjjzzjj视频全免费| 免费观看成人久久网免费观看| 国产精品亚洲一区二区麻豆| 亚洲一区二区三区影院| 在线看免费观看AV深夜影院| 一级做a毛片免费视频| tom影院亚洲国产一区二区| 在线亚洲午夜理论AV大片| 成人免费看片又大又黄| 免费视频一区二区| 乱人伦中文视频在线观看免费| 老司机亚洲精品影院| 四虎成人精品在永久免费| 精品免费人成视频app | 亚洲综合丁香婷婷六月香| 亚洲精品老司机在线观看| 国产精品成人免费一区二区| 成人网站免费看黄A站视频| 麻豆亚洲AV成人无码久久精品| 亚洲国产精品成人精品软件| ZZIJZZIJ亚洲日本少妇JIZJIZ| 四虎成人免费观看在线网址 | 亚洲成a人片在线观| 亚洲AV午夜成人片| 亚洲精品成人久久久| 女性自慰aⅴ片高清免费| 在线观看的免费网站无遮挡| yellow免费网站| 日韩色视频一区二区三区亚洲| 亚洲精品国产专区91在线| 亚洲大尺度无码专区尤物| 亚洲真人日本在线| 免费人成视频x8x8入口|