如何使用jquery检查某个元素是否在用户视图中

2023-12-28

我有一个很大的可拖动对象div在我的窗户里。这div有一个较小的窗口。

<div id="draggable-area" style="width:500px;height:500px;overflow:hidden">
 <div id="draggable" style="width:5000px;height:5000px">
     <ul>
         <li></li>
         <li></li>
         <li></li>
         <li></li>
         <li></li>
         ....
     </ul>
  </div>
</div>  

我怎么知道是否li元素在用户视口中可见(我的意思是真正可见,而不是在溢出区域中)?


要检查元素是否在当前视口中:

function elementInViewport(el) {
  var top = el.offsetTop;
  var left = el.offsetLeft;
  var width = el.offsetWidth;
  var height = el.offsetHeight;

  while(el.offsetParent) {
    el = el.offsetParent;
    top += el.offsetTop;
    left += el.offsetLeft;
  }

  return (
    top >= window.pageYOffset &&
    left >= window.pageXOffset &&
    (top + height) <= (window.pageYOffset + window.innerHeight) &&
    (left + width) <= (window.pageXOffset + window.innerWidth)
  );
}

(Source https://stackoverflow.com/questions/123999/how-to-tell-if-a-dom-element-is-visible-in-the-current-viewport)

对于更强大的方法,我建议视口选择器 http://www.appelsiini.net/projects/viewport,这使您可以执行以下操作:

$("#elem:in-viewport")
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用jquery检查某个元素是否在用户视图中 的相关文章

随机推荐

  • Redis 数据结构空间要求

    redis中排序集和列表的空间有什么区别 我的猜测是 排序集是某种平衡二叉树 列表是链表 这意味着除了我为每个值编码的三个值 键 分数 值 之外 尽管我会将链表的分数和值混合在一起 但开销是链表需要跟踪一个另一个节点 二叉树需要跟踪两个 因
  • 如何通过管道传输到 Next.js 13 api 响应?

    早些时候 我能够将另一个 api 调用的响应通过管道传输到 Next js api 响应 如下所示 export default async function req res prevent same site obfuscate orig
  • 音频会话“闪避”在 iOS 4 中中断...?

    我有一个应用程序 它使用 MPAudioPlayerController 来访问 iPod 音乐库 并使用 AVAudioPlayer 将音频覆盖在音乐之上 我用过本文档 http developer apple com iphone li
  • 使用 Android Studio 和 ndkBuild 无法到达 C++ 断点

    我试图在简单的 C 代码中达到断点 这里是 cpp include
  • 获取手动绘制点的坐标

    我有一个执行结果的图表ListPlot 功能 我可以通过将点移动到不同的位置来手动编辑此图 并使用添加新点绘图工具 http reference wolfram com mathematica tutorial InteractiveGra
  • dplyr case_when 具有动态案例数

    想要使用 dplyr 和case when将一系列指标列折叠为单个列 挑战是我希望能够折叠未指定 动态数量的列 考虑以下数据集 gear已被分成一系列指标列 library dplyr data mtcars mtcars mtcars g
  • 如何从一张画布复制到另一张画布

    这里是jsfiddle http jsfiddle net tahmid UjrJM 2 我把它作为我的源画布 HTML h1 Source Canvas h1
  • Expand.grid() 中的奇怪错误

    我已经创建并评估了对expand grid通过使用eval parse 简而言之 len lt 36 Text lt paste pos lt expand grid paste rep c TRUE FALSE len collapse
  • UILabel 中文本的像素宽度

    我需要绘制一个删除线的 UILabel 因此我将 UILabel 子类化并实现如下 implementation UIStrikedLabel void drawTextInRect CGRect rect super drawTextIn
  • 使用 OAEP 密钥加密的 S/MIME 封装邮件解密失败?

    使用 Java 和 BouncyCastle 我能够解密大量 S MIME 封装的消息 但当密钥加密算法为1 2 840 113549 1 1 7 id RSAES OAEP 解密失败 堆栈跟踪在这个问题的末尾 发生这种情况的行 conte
  • Pocketsphinx安装失败?树莓派零(Raspbian Jessie)

    这可能会被标记为重复项 但我没有任何运气 所以我们开始吧 我正在尝试使用Python2 7开发一个类似 Jarvis 的设置 我希望使用 Pocketsphinx 作为其中的一部分 我尝试在我的 Windows 10 机器上执行此操作 但
  • “.”在哪里? (点)来自使用 PHP 'scandir' 时

    我有点困惑 我正在构建一个 PHP 函数来循环输出指定目录中的图像 PHP dir bilder objekt 0 objekt nr thumbnail thumbnails scandir dir print r thumbnails
  • 如何在生成 PDF 文件下载时显示进度条,而不出现 IE“下载”警告

    我已经在客户端和服务器之间进行了通信 过程很简单 我正在向控制器发出 AJAX POST 请求 该控制器在文件系统中生成 pdf 上述请求成功后 将发出表单 GET 请求以取回 pdf 并打开标准浏览器 保存或打开 对话框 我之所以采用两步
  • C - fwrite 大于 4GB 的二进制文件

    我基本上是 C 新手 我有一个 64 位 Windows 7 配备 64GB RAM 和 240GB SSD 我使用的采集板将采集的数据存储在 2 个内部 FIFO 中 然后将数据传递到 RAM 这样我就有可能采集 60 GB 的数据 我无
  • 部署时字体未加载

    我创建了一个有角度的应用程序 它在本地环境中加载得非常好 所有样式和字体都被应用 但是当我部署它时 字体没有加载 无法弄清楚为什么 它没有在控制台中显示任何错误或警告消息 我正在导入所有 css 样式angular json文件如下 dem
  • Factorial 函数在 Python 中工作,对于 Julia 返回 0

    我在Python中定义了一个阶乘函数 如下所示 def fact n if n 1 return n else return n fact n 1 print fact 100 在 Julia 中如下 function fact n if
  • 更改日期格式javascript

    我正在从两个不同的 API 中提取一些数据 稍后我想要获取这些对象 但是 我得到两种不同的日期格式 这种格式 1427457730 和这种格式 2015 04 10T09 12 22Z 如何更改其中之一的格式 以便我可以使用相同的格式 ea
  • MSSQLSM 2008 奇怪的登录在 select 语句上失败

    我的SQL服务器上有多种用户 所有用户都可以登录服务器 然而 一个用户一旦登录就无法在特定视图上运行任何操作 选择 更改 编辑 但可以在所有其余视图上运行 用户设置与具有完全访问权限的另一个帐户相同 说实话 它们是相同的 对于无法从他的视图
  • Apollo 的 MockedProvider 不为 withApollo 中包装的组件提供客户端

    在测试 withApollo 中包装的组件时 我使用 Apollo 文档中指定的 Apollo 的 MockedProvider 但是当酶尝试渲染该组件时 渲染器找不到clientMockedProvider 应该已经提供了 我有一个使用的
  • 如何使用jquery检查某个元素是否在用户视图中

    我有一个很大的可拖动对象div在我的窗户里 这div有一个较小的窗口 div style width 500px height 500px div style width 100 height 5000px ul li li li li l