簡體   English   中英

如何不使用JQuery來獲得標簽的左上角?

[英]How to get top left corner of tag not using JQuery?

如何不使用JQuery來獲得標簽的左上角?

element.offsetLeftelement.offsetTop將為您提供與其父級相關的頂部拐角

function top(el) {
    var topVal = el.offsetTop;
    if (el.parentNode) topVal+= top(el.parentNode);
    return topVal;
}

function left(el) {
    var leftVal = el.offsetLeft;
    if (el.parentNode) leftVal+= left(el.parentNode);
    return leftVal;
}

遞歸調用它直到您遇到文檔(document.parentNode為null並結束遞歸)將使您相對於整個文檔。 請注意,這與iframe或其他具有自己文檔的文件不兼容。

[編輯]

上面的遞歸函數過於幼稚,僅適用於非常簡單的頁面。 您可以改為遍歷offsetParent,但這也會引起一些問題。

這個解決方案似乎工作合理,但我自己已經對其進行了全面測試

檢索HTML元素的位置(X,Y)

要獲得相對於其父代的頭寸,請使用以下命令:

function getRelativePos(el) {
  var left=el.offsetX;
  var top=el.offsetY;
  return {top:top,left:left};
}

現在您可以像這樣使用它,向左pos發出警報:

var myElement=document.getElementById('myel');
alert( getRelativePos(myElement).left );

如果需要絕對位置,請使用以下命令:

function getAbsPos(el) {
   var rect=el.getBoundingClientRect();
   return {top:rect.top,left:rect.left};
}

您可以像使用getRelativePos函數一樣使用它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM