Как определить, что HTML-элемент находится в представлении? - PullRequest
0 голосов
/ 01 апреля 2010

Желательно, используя Jquery, как определить, находится ли элемент в видимой клиентской области браузера?

Я динамически создаю меню из набора данных, и когда список становится слишком длинным, высота результирующего меню приводит к тому, что часть его падает ниже нижней области браузера. Как я могу обнаружить это и действовать соответственно?

1 Ответ

3 голосов
/ 01 апреля 2010

Я считаю, что можно приготовить что-нибудь, используя 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()) {

Добавление поддержки горизонтальной прокрутки окна просмотра оставлено в качестве упражнения для читателя:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...