SOURCE

console 命令行工具 X clear

                    
>
console
<!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>
    ul {
      width: 200px;
      height: 200px;
      border: 1px solid #000;
      overflow-y: scroll;
    }

    li {
      height: 40px;
      margin: 10px;
      width: 80%;
    }
  </style>
</head>

<body>
  <ul id="parentElementId">
    <li id="test1">test1</li>
    <li id="test2">test2</li>
    <li id="test3">test3</li>
    <li id="test4">test4</li>
    <li id="test5">test5</li>
    <li id="test6">test6</li>
    <li id="test7">test7</li>
    <li id="test8">test8</li>
    <li id="test9">test9</li>
    <li id="test10">test10</li>  
  </ul>
  <button onclick="test()">test</button>
  <br>
  <div id="result"></div>
  <script>
    function isChildInParentViewport(parentEl, childEl) {
      const parentRect = parentEl.getBoundingClientRect();
      const childRect = childEl.getBoundingClientRect();

      return (
        childRect.top >= parentRect.top &&
        childRect.left >= parentRect.left &&
        childRect.bottom <= parentRect.bottom &&
        childRect.right <= parentRect.right
      );
    }

    function test() {
      // 用法示例
      const parentElement = document.getElementById('parentElementId');

      var childrens = Array.from(document.querySelectorAll('li'))

      var list = childrens.filter((item, index) => {
        const isChildInViewport = isChildInParentViewport(parentElement, item);
        return isChildInViewport
      })

      var ids = list.map(item => item.id)
      document.querySelector('#result').innerHTML = '当前视窗内的元素有:' + ids
    }


  </script>
</body>

</html>