前端开发您现在的位置是:首页 > 博客日志 > 前端开发

前端检测dom是否被遮盖,js 检测元素是否被覆盖

<a href='mailto:'>微wx笑</a>的头像微wx笑 2022-11-01前端开发 7 0关键字:   

前端检测dom是否被遮盖new IntersectionObserver(([change]) => { console.log(change); // 被覆盖就是false,反之true console.log(change.isVisible) }, { threshold

前端检测dom是否被遮盖LoE无知

new IntersectionObserver(([change]) => {
  console.log(change);
    // 被覆盖就是false,反之true
  console.log(change.isVisible) 
}, {
  threshold: [1.0],
  delay: 1000, 
  trackVisibility: true,
}).observe(document.querySelector(".first"));


LoE无知

知识点:Document.elementFromPoint()LoE无知

  返回当前文档上处于指定坐标位置最顶层的元素, 坐标是相对于包含该文档的浏览器窗口的左上角为原点来计算的, 通常 x 和 y 坐标都应为正数.LoE无知

 LoE无知

js如下:LoE无知

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));
}


LoE无知

本文为转载文章,版权归原作者所有,不代表本站立场和观点。

很赞哦! () 有话说 ()

相关文章