0

当用户光标位于表格行上时,我将显示一个菜单,其中包含该特定行的扩展信息。问题是当用户向下滚动到最后几行时,我的菜单会溢出视口或窗口。

当菜单在视口/窗口底部的 50px 内时,有没有办法得到通知?

见快照

在此处输入图像描述

4

1 回答 1

0

是的,您需要从计算两件事开始:

  1. 视口底部相对于文档的当前位置
  2. 菜单底部相对于文档的当前位置

获得这两个值后,您可以比较这两个值以确定菜单底部是否在视口之外。如果 #2 的值大于 #1 的值,那么您的菜单位于视口之外。

下面是一些使用 jQuery 的示例代码,供您参考。

var $window = $(window),
    $flyoutMenu = $('#flyout-menu'),
    $viewportBottom = $window.scrollTop() + $window.height(), // value #1
    $flyoutMenuBottom = $flyoutMenu.offset().top + $flyoutMenu.height(); // value #2

if (flyoutMenuBottom > $viewportBottom) {
    alert('Menu is outside of viewport');
}

编辑:更多信息

您可能希望将此代码包装在一个函数中,该函数在您第一次打开弹出菜单时以及每次窗口触发滚动事件时再次调用。

于 2013-09-10T23:39:00.287 回答