Вопрос в этой ссылке отвечает, как узнать, видимо ли элемент после прокрутки. (Check if element is visible after scrolling). У меня немного другая ситуация: у меня есть прокрутка div, со многими элементами внутри нее, идентифицированными идентификатором. В любой момент времени, как я могу узнать, какой из них является верхним элементом, отображаемым в div? Я использую angular.js, поэтому я имею в виду, что у меня есть переменная в моей области, которая постоянно обновляется с верхним элементом, который появляется в прокрутке div.Как узнать, какой верхний элемент отображается в div
1
A
ответ
1
Вы можете создать директиву, которая перехватывает к scoll
событию элемента, а затем определяет ближайший к его вершине, перебирает все дети и сравнивая их offsetTop
к его собственному offsetTop + scrollTop
.
.directive('detectClosestToTop', function ($timeout) {
function findClosestToTop(root) {
var closestElem;
var closestTop = root.scrollHeight;
var minTop = root.offsetTop + root.scrollTop;
[].forEach.call(root.children, function (child) {
var childTop = child.offsetTop;
if ((childTop >= minTop) && (childTop < closestTop)) {
closestElem = child;
closestTop = childTop;
}
});
return closestElem;
}
return {
restrict: 'A',
link: function (scope, elem) {
// Create a the onScroll listener
function detectClosest() {
scope.closestToTop = findClosestToTop(elem[0]);
}
function onScroll() {
scope.$apply(detectClosest);
}
// Register the listener and make sure we clean up,
// when/if the element is removed
elem.on('scroll', onScroll);
scope.$on('$destroy', function() {
elem.off('scroll', onScroll);
});
// Initialize `scope.closestToTop`,
// after the content has been rendered
$timeout(detectClosest);
}
};
});
См, также, это short demo.
0
Это зависит от того, какие элементы в вашей прокруткой дивы .. Если все они являются дивы, то каждый раз, когда вы перечисляете вам просто нужно рассчитать так:
$('.outer-div').scroll(function(){
$('div').each(function(){
if($('.outer-div').scrollTop() + $('.outer-div').height() > $(this).offset().top && $('.outer-div').scrollTop() < $(this).offset().top){
console.log("shown in div")
}
});
});
Примечание: Я не проверял еще, так может быть, есть опечатка .. Ура
Смежные вопросы
- 1. Как узнать, какой элемент отображается в GWT ScrollPanel
- 2. Как узнать, какой элемент накладывается?
- 3. Как узнать, отображается ли элемент?
- 4. Как узнать, какой элемент имеет класс?
- 5. Элемент отображается в div
- 6. Как узнать, какой элемент вызывает запрос ajax
- 7. Как узнать, какой элемент проверяемого класса
- 8. Как узнать, в какой элемент нажата кнопка
- 9. Как узнать, какой элемент используется в ListView?
- 10. JQuery: как узнать, какой элемент был нажат?
- 11. Возможно ли узнать, на какой элемент управления отображается ErrorProvider?
- 12. Как узнать, какой div следует прокручивать?
- 13. Как узнать, какой элемент GWT имеет фокус?
- 14. Как узнать, какой элемент вызывает полосу прокрутки
- 15. Как узнать, какой элемент держать объект данных
- 16. Как узнать, какой div был нажат?
- 17. Как узнать, какой элемент был щелкнул
- 18. Остановить верхний фиксированный элемент при достижении div
- 19. Как узнать, какой div называется функцией в классе?
- 20. Элемент Div отображается вне родительского div
- 21. Как узнать, какой «вид» документа отображается в IE
- 22. Как узнать, какой маршрут в настоящее время отображается
- 23. Как узнать, какой элемент HTML вызывает вертикальную полосу прокрутки
- 24. Как я могу узнать, какой элемент события достигнет?
- 25. Как узнать, какой элемент в списке выбрал пользователь в списке?
- 26. Верхний колонтитул не отображается
- 27. Как узнать, что присутствует какой-то конкретный элемент?
- 28. Как узнать, какой элемент в массиве содержит наибольшее значение?
- 29. Как узнать, какой элемент в списке вызвал функцию any()?
- 30. Как узнать, какой элемент был отмечен/снят флажок в списке
Какие браузеры вам нужны для поддержки? – gkalpak
Chrome и IE> = 9 –