如何检测Html元素是否在View中?

发布于 2024-08-27 06:56:58 字数 118 浏览 4 评论 0原文

最好使用 Jquery,如何检测元素是否在浏览器的可视客户区域内?

我正在从数据集动态创建菜单,当列表增长太长时,生成的菜单的高度会导致其中一部分低于浏览器底部客户端区域。我如何检测到这一点并采取相应行动?

Using Jquery preferably, how do I detect if an element is within the viewable client area of a browser?

I'm dynamically creating a menu from a dataset, and when the list grows too long, the height of the resulting menu causes part of it to fall below the browser bottom client area. How do I detect this and act accordingly?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

奢欲 2024-09-03 06:56:58

我相信应该可以使用 position() 来制作一些东西和 scrollTop() (添加 scrollLeft(如果您的页面容易水平滚动)。以下是一些未经测试的示例代码,如果目标元素(完全或部分)在视口内,则应显示一条消息:

var pos = $('#element').position(), win = $(window);

if (pos.top < win.height() + win.scrollTop() && pos.bottom > win.scrollTop()) {
    alert('Look at me!');
}

如果您特别关心完全可见性,则可以交换条件:

if (pos.bottom < win.height() + win.scrollTop() && pos.top > win.scrollTop()) {

添加对视口水平滚动的支持保留为给读者的练习:)

I believe it should be possible to cook something up using position() and scrollTop() (add scrollLeft if your page is prone to horizontal scrolling). Here is some untested sample code that should display a message if the target element is (fully or partially) within the viewport:

var pos = $('#element').position(), win = $(window);

if (pos.top < win.height() + win.scrollTop() && pos.bottom > win.scrollTop()) {
    alert('Look at me!');
}

The conditions can be swapped around if you care specifically about full visiblity:

if (pos.bottom < win.height() + win.scrollTop() && pos.top > win.scrollTop()) {

Adding support for horizontal scrolling of the viewport is left as an exercise for the reader :)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文