Возникла задача ― в скролируемом контейнере найти первый видимый domElement
. Я подумал, что, наверняка, это довольно частая задача, и должно быть множество разных готовых решений. Порыскав по сети я нашёл лишь множество вариаций одного и того же: рекурсивный обход всего древа domElement
-ов, с рассчётом их границ. В голову полезли варианты с бинарным поиском по тому же принципу, но уж больно не хотелось с этим всем связываться. Как то уж слишком сурово, для такой мелочной задачи. Должен быть “нативный
” инструмент.
Увы, совсем уж нативного инструмента я не нашёл. Но нашёл, гхм, альтернативный путь. Возможно, кому-нибудь ещё пригодится.
- У контейнера, который содержит искомые
domElement
-ы вызываемgetBoundingClientRect
. Получаем его расположение на экране - Вычисляем координаты какого-либо участка из
viewPort
-а, где должен находится искомыйdomElement
- Вызываем
document.elementFromPoint
, указав нужные координаты экрана - profit…
Решение сгодится не для любого случая. Но мне вполне подошло.