Цитата:
-обращаетесь к коллекции DOM-элементов всего своего BODY (можно для уменьшения количества просматриваемых элементов выбрать только элементы класса DIV). -перебирая последовательно все эти элементы определяете их абсолютные координаты с помощью getOffset() -сравниваете полученные абсолютные координаты всех этих элементов с координатами Вашего заданного прямоугольника и определяете попадание одних в другие. -таким образом Вы получите список необходимых элементов; дальше необходимо решить нужны ли Вам элементы, которые "накрывают" заданный прямоугольник, либо нужны только элементы, которые полностью умещаются в заданном прямоугольнике. function getOffsetRect(elem) { var box = elem.getBoundingClientRect() var body = document.body var docElem = document.documentElement var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft var clientTop = docElem.clientTop || body.clientTop || 0 var clientLeft = docElem.clientLeft || body.clientLeft || 0 var top = box.top + scrollTop - clientTop var left = box.left + scrollLeft - clientLeft return { top: Math.round(top), left: Math.round(left) } } function getOffsetSum(elem) { var top=0, left=0; while(elem) { top = top + parseInt(elem.offsetTop); left = left + parseInt(elem.offsetLeft); elem = elem.offsetParent; } return {top: top, left: left} } function getOffset(elem) { if (elem.getBoundingClientRect) return getOffsetRect(elem); else return getOffsetSum(elem); } to dmitriymar: непонятка со скроллером возникла между вами из-за того, что Вы думаете о заданных координатах, как о координатах мыши - в этом случае нужно учитывать скроллеры, а traa говорит об "абсолютно-абсолютных" координатах страницы (а не экрана), например, 3000х5000 px. |
Часовой пояс GMT +3, время: 20:49. |