色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

如何檢查一個html元素是否與瀏覽器底部相交?

林國瑞2年前7瀏覽0評論

在這個例子中,顯然我的div與頁面底部相交,我如何從javascript中知道這個元素是否與它相交?

如果比如:bottom:0px;不應該相交

.fixed{
  position:fixed;
  bottom:-10px;
  left:0px;
  width:300px;
  height:300px;
  background:blue;
  border:3px solid red;
}

<div class="fixed"></div>

可以使用getBoundingClientRect()函數。它提供有關元素大小及其相對于視口的位置的信息。

然后將它轉換到window.innerHeight,你就可以知道它是否與屏幕相交。

var elmBottom = document.querySelector(".fixed").getBoundingClientRect().bottom;

if(elmBottom > window.innerHeight) console.log("elm intersects the bottom");
else console.log("elm still fully in view");

.fixed{
  position:fixed;
  bottom:-10px;
  left:0px;
  width:300px;
  height:300px;
  background:blue;
  border:3px solid red;
}

<div class="fixed"></div>

我參考了本教程,其中的代碼檢查元素是否在視口中。

代碼的工作方式是使用getBoundingClientRect()檢查元素的位置,并使用documentElement.clientHeight檢查視口的高度。

在您的例子中,因為您只想檢查底部邊框是否重疊,所以我修改了代碼,以便只檢查domRect.bottom。

最后這個方法會顯示bottom:0px;如相交,和底:1px不相交。要底的話:0px若要相交,請將documentElement.clientHeight加1

function isIntersectingBottom(ele) {
    const domRect = ele.getBoundingClientRect();
    console.log(domRect.bottom);
    console.log(document.documentElement.clientHeight);
    return (
      domRect.bottom >= document.documentElement.clientHeight + 1
    );
  }
  
  const ele = document.querySelector('.fixed');
  console.log(isIntersectingBottom(ele));

.fixed{
  position:fixed;
  bottom:-10px;
  left:0px;
  width:300px;
  height:300px;
  background:blue;
  border:3px solid red;
}

<div class="fixed"></div>