Посмотрим, правильно ли я понял.У вас есть достаточно длинная страница для прокрутки, и есть элемент, который, когда он появляется в окне просмотра, вы хотите что-то с ним сделать.Таким образом, единственное событие, которое точно срабатывает в момент, когда элемент попадает в область просмотра, - это «прокрутка».Поэтому, если элемент находится на странице, а прокрутка находится в области просмотра, вам нужно привязать действие к событию прокрутки, чтобы проверять, присутствует ли элемент в представлении каждый раз, когда событие инициируется.Примерно так:
$(window).scroll(function() {
check_element_position();
});
Теперь, чтобы вы знали, находится ли элемент в окне просмотра, вам нужно 3 вещи.Верх смещения этого элемента, размер области просмотра и верхняя часть прокрутки окна.Должно выглядеть примерно так:
function check_element_position() {
var win = $(window);
var window_height = win.height();
var element = $(your_element);
var elem_offset_top = element.offset().top;
var elem_height = element.height();
var win_scroll = win.scrollTop();
var pseudo_offset = (elem_offset_top - win_scroll);
if (pseudo_offset < window_height && pseudo_offset >= 0) {
// element in view
}
else {
// elem not in view
}
}
Здесь (elem_offset_top - win_scroll) представляет позицию элемента, если не было прокрутки.Таким образом, вам просто нужно проверить, больше ли вершина смещения элемента, чем окно просмотра окна, чтобы увидеть, виден он или нет.Наконец, вы можете быть более точными в своих вычислениях, добавив высоту элемента (переменная уже там), потому что код, который я только что сделал, вызовет событие, даже если элемент видим только на 1 пиксель.
Примечание:Я сделал это всего за пять минут, так что вам, возможно, придется кое-что исправить, но это дает вам чертовски хорошее представление о том, что происходит;)
Не стесняйтесь комментировать и задавать вопросы