javascript - 如何检查元素是否在屏幕外

标签 javascript jquery zk

如果 DIV 元素没有脱离屏幕,我需要使用 jQuery 检查。这些元素是可见的并根据 CSS 属性显示,但可以通过以下方式有意将它们放置在屏幕外:

position: absolute; 
left: -1000px; 
top: -1000px;

我无法使用 jQuery :visible 选择器,因为该元素的高度和宽度都不为零。

我没有做任何花哨的事情。这个绝对位置放置是我的方式 Ajax框架实现了一些小部件的隐藏/显示。

最佳答案

取决于您对“屏幕外”的定义。它是在视口(viewport)内,还是在页面定义的边界内?

使用 Element.getBoundingClientRect()您可以轻松检测您的元素是否在视口(viewport)的边界内(即屏幕上或屏幕外):

jQuery.expr.filters.offscreen = function(el) {
  var rect = el.getBoundingClientRect();
  return (
           (rect.x + rect.width) < 0 
             || (rect.y + rect.height) < 0
             || (rect.x > window.innerWidth || rect.y > window.innerHeight)
         );
};

然后您可以通过多种方式使用它:

// returns all elements that are offscreen
$(':offscreen');

// boolean returned if element is offscreen
$('div').is(':offscreen');

关于javascript - 如何检查元素是否在屏幕外,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8897289/

相关文章:

java - 如何在列表单元格中添加组件?

javascript - 在同一窗口中使用 localStorage 监听变化

javascript - 如何使用 Meteor Cloudinary 显示另一个用户的个人资料图像项目

javascript - 如何使用 Javascript、php 等将 html + CSS 页面转换为 pdf?

javascript - 监听输入值的删除

jquery - 按钮正常,但 href 链接无法触发

java - 如何将索引 "i"处的项目设置为zk列表框中的选定项目

javascript - 使用 setTimeout 更新变量和运行函数

jquery - 有没有办法使用 animate.css 循环组合动画?我正在尝试弹跳/滑动单词并让它们弹跳

java - 如何隐藏 zkoss URL 中显示的 zul 扩展名?