美文网首页
判断元素A是否在元素B的可视范围内

判断元素A是否在元素B的可视范围内

作者: 在小白的路上越走越远 | 来源:发表于2020-12-14 16:35 被阅读0次

结构如下:

    <div id="container">
      <div class="div1"></div>
      <div class="div2"></div>
      <div class="div3"></div>
      <div class="div4"></div>
    </div>

判断方法:

    function position(element) {
      elementOffsetTop = element.offsetTop - container.offsetTop;
      // 在上方
      isTop = container.scrollTop > divOffsetTop + element.clientHeight;
      // 在下方
      isBottom = container.scrollTop < divOffsetTop - container.clientHeight;

      if (isTop || isBottom) {
          console.log("消失");
        } else {
          console.log("出现");
      }
    }

完整代码参考:

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="UTF-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>Document</title>
    <style>
      #container {
        height: 500px;
        width: 300px;
        overflow-y: scroll;
        background-color: aqua;
      }
      .div1,
      .div2,
      .div3,
      .div4 {
        height: 400px;
        width: 280px;
        /* border: 1px solid springgreen; */
        margin-top: 20px;
      }

      .div1 {
        background-color: violet;
      }
      .div2 {
        background-color: #fff;
      }
      .div3 {
        background-color: tomato;
      }
    </style>
  </head>
  <body>
    <button>定位</button>
    <div id="container">
      <div class="div1"></div>
      <div class="div2"></div>
      <div class="div3"></div>
      <div class="div4"></div>
    </div>
  </body>
  <script>
    const container = document.querySelector("#container");

    const div1 = document.querySelector(".div1");
    const div2 = document.querySelector(".div2");
    const div3 = document.querySelector(".div3");
    const div4 = document.querySelector(".div4");

    const button = document.querySelector("button");
    button.addEventListener("click", () => {
      // 如果div1在可视范围内,按钮没反应,否则有反应
        console.log(document.querySelectorAll("#container>div")[1])
      position(div3)
    });

    function position(element) {
      // 获取container的可视范围
      console.log('container.clientHeight',container.clientHeight);

      // 获取元素的高度
      console.log('element.clientHeight',element.clientHeight);

      // 获取元素的偏移距离
      divOffsetTop = element.offsetTop - container.offsetTop;
      console.log('divOffsetTop',divOffsetTop);

      // 页面滚动的距离
      console.log(container.scrollTop);

      // 在上方
      let isTop = container.scrollTop > divOffsetTop + element.clientHeight;

      // 在下方
      let isBottom = container.scrollTop < divOffsetTop - container.clientHeight;
      if (isTop || isBottom) {
          container.scrollTop = divOffsetTop
          console.log("消失");
        } else {
          console.log("出现");
        
      }
    }
  </script>
</html>

相关文章

  • 判断元素是否在可视范围内或是否滚动到底部

    判断元素是否在可视范围内 判断是否滚动到底部

  • jquery判断元素是否在可视区域范围内

    已经有类似的文章了,但是总感觉哪里不对!所以此文仅作备忘用,如果能帮助你更好的理解就更好了! 目标元素:#item...

  • jquery判断元素是否在可视区域范围内

    $("#app").offset().top; offset().top表示 绝对偏移值,比如说有一个很长的页面,...

  • jquery懒加载、回到顶部

    思考 1、如果窗口resize了2、如果节点加入重复了3、怎样判断元素是在视窗范围内* 1、如何判断一个元素是否出...

  • js判断获取元素是否在可视区域

    js判断获取元素是否在可视区域执行var ab = $(".nav_dh")[0]; isElementInVie...

  • Scrublet

    其大致思想是通过判断每一个元素与中位值的偏差是否处于合理的范围内来判断该元素是否为离群值。(对于离群值 1 调整 ...

  • 懒加载

    如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。 当窗口滚动时,判断一个元素是不是...

  • 懒加载+木桶布局

    如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。 当窗口滚动时,判断一个元素是不是...

  • 懒加载

    如何判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。 当窗口滚动时,判断一个元素是不是...

  • 懒加载实例

    判断一个元素是否出现在窗口可视范围(浏览器的上边缘和下边缘之间,肉眼可视)。 当窗口滚动时,判断一个元素是不是出现...

网友评论

      本文标题:判断元素A是否在元素B的可视范围内

      本文链接:https://www.haomeiwen.com/subject/jmuwgktx.html