js 檢測元素是否被覆蓋


知識點:Document.elementFromPoint()

  返回當前文檔上處於指定坐標位置最頂層的元素, 坐標是相對於包含該文檔的瀏覽器窗口的左上角為原點來計算的, 通常 x 和 y 坐標都應為正數.

 

js如下:

function hasOverLayer(element) {
  let document = element.ownerDocument,
      rect = element.getBoundingClientRect(), // 獲取目標的矩形信息
      x = rect.x, 
      y = rect.y, 
      width = rect.width, 
      height = rect.height;

  x |= 0;
  y |= 0;
  width |= 0;
  height |= 0;
  // 四頂點取樣
  let elements = [
    document.elementFromPoint(x+1, y+1),
    document.elementFromPoint(x + width-1, y+1),
    document.elementFromPoint(x+1, y + height-1),
    document.elementFromPoint(x + width-1, y + height-1)
  ];
  // 判斷非本身及非子孫元素 return elements.filter((el)=> el !== null).some((el)=> el !== element && !element.contains(el));
}

 

引申:檢測是否在可視區域(即x、y的檢測)

IntersectionObserver


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM