Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   вычесления позиции (https://javascript.ru/forum/events/28233-vychesleniya-pozicii.html)

cyber 11.05.2012 21:53

вычесления позиции
 
как с минимальной нагрузкой на браузер вычислять позицию элемента - возник этот вопрос потому что вычиселние будет происходить во время события onmousemove.
надо получать свойство left

cyber 11.05.2012 23:59

все вроде нашел http://javascript.ru/forum/misc/7839...ri-div%60.html

skymanrm 11.05.2012 23:59

Вариантов наверное немного, на ум приходит только поочередно перебирать родителей и складывать offsetParent.offsetLeft пока не доберетесь до BODY. Чтобы не дергать каждый раз DOM, может быть легче будет один раз посчитать позицию элемента, а затем при его перемещение изменять её вручную.

cyber 12.05.2012 00:14

нашел такой код
function getOffsetRect(elem) {
    // (1)
    var box = elem.getBoundingClientRect()
    
    // (2)
    var body = document.body
    var docElem = document.documentElement
    
    // (3)
    var scrollTop = window.pageYOffset || docElem.scrollTop || body.scrollTop
    var scrollLeft = window.pageXOffset || docElem.scrollLeft || body.scrollLeft
    
    // (4)
    var clientTop = docElem.clientTop || body.clientTop || 0
    var clientLeft = docElem.clientLeft || body.clientLeft || 0
    
    // (5)
    var top  = box.top +  scrollTop - clientTop
    var left = box.left + scrollLeft - clientLeft
    
    return { top: Math.round(top), left: Math.round(left) }
}

cyber 12.05.2012 00:15

пишу слайдер и нужна это затем что б расчитать позицию слайдера относительно блока.

cyber 12.05.2012 01:56

Цитата:

Сообщение от skymanrm (Сообщение 173922)
может быть легче будет один раз посчитать позицию элемента, а затем при его перемещение изменять её вручную.

пробывал много вариантов нечего не получается ...

cyber 12.05.2012 23:10

что возращает document.documentElement ?
дошло=) возращает <html>


Часовой пояс GMT +3, время: 17:06.