Получить позицию (X, Y) HTML-элемента

C # - это язык с несколькими парадигмами, а не чистый объектно-ориентированный язык.

1319
задан Greg 10 August 2013 в 10:30
поделиться

7 ответов

при использовании jQuery эти плагин размеров превосходен и позволяет Вам, определяют точно, что Вы хотите.

, например,

Относительное положение, абсолютное положение, абсолютное положение без дополнения, с дополнением...

Это продолжается, позвольте нам просто сказать, что существует много, можно сделать с ним.

Плюс премия использования jQuery, это - легкий размер файла и легкое использование, Вы не вернетесь к JavaScript без него впоследствии.

8
ответ дан Jesper Rønn-Jensen 10 August 2013 в 10:30
поделиться

Элементы HTML на большинстве браузеров будут have:-

offsetLeft
offsetTop

Эти specifiy положение родственника элемента его самый близкий родитель, который имеет расположение. Этот родитель может часто быть стандартным форматом интерфейса контрольных задач, к которому получают доступ, offsetParent свойство.

IE и FF3 имеют

clientLeft
clientTop

, Эти свойства менее распространены, они определяют положение элементов с его родительской клиентской областью (дополненной областью является часть клиентской области, но граница и поле не).

38
ответ дан AnthonyWJones 10 August 2013 в 10:30
поделиться
  • 1
    Это работает. Позвольте мне повториться: ЭТО, РАБОТАЯ. Другое обходное решение weren' t достаточно хороший, потому что, если у Вас был webview во фрагменте при потере вложения, Вы didn' t имеют доступ к потоку больше. Но это работает безупречно. Огромное спасибо. – Reinherd 19 March 2014 в 16:49

Библиотеки переходят к некоторым длинам для получения точных смещений для элемента.
вот простая функция, которая делает задание в каждом обстоятельства, которые я попробовал.

function getOffset( el ) {
    var _x = 0;
    var _y = 0;
    while( el && !isNaN( el.offsetLeft ) && !isNaN( el.offsetTop ) ) {
        _x += el.offsetLeft - el.scrollLeft;
        _y += el.offsetTop - el.scrollTop;
        el = el.offsetParent;
    }
    return { top: _y, left: _x };
}
var x = getOffset( document.getElementById('yourElId') ).left; 
300
ответ дан Da-Jin 10 August 2013 в 10:30
поделиться
  • 1
    Протест иметь в виду. Я заметил это, если Вы называете this.pauseTimers (), весь WebView' s приостанавливаются, не только экземпляр Ваше обращение к этому. Это было на Adroid 4.0.4 – Geert Weening 23 July 2012 в 13:34

Вы могли бы быть лучше обслужены при помощи платформы JavaScript, которая имеет функции для возврата такой информации (и настолько больше!) способом браузера-independant. Вот некоторые:

С этими платформами, Вы могли сделать что-то как: $('id-of-img').top для получения y-пиксельной координаты изображения.

16
ответ дан Shalom Craimer 10 August 2013 в 10:30
поделиться
  • 1
    Спасибо, я нашел решение в blog:In Вашим Действием onPause, необходимо назвать WebView.onPause () и WebView.pauseTimers (). В Вашем Действии onResume Вы должен назвать WebView.onResume () и WebView.resumeTimers (). Но с тех пор существует одноразовая ошибка в refcount, необходимо назвать WebView.resumeTimers () при первом создании веб-представления. WebView.class.getMethod (" onPause") .invoke (webview); – diyism 26 September 2011 в 01:44
/**
 *
 * @param {HTMLElement} el
 * @return {{top: number, left: number}}
 */
function getDocumentOffsetPosition(el) {
    var position = {
        top: el.offsetTop,
        left: el.offsetLeft
    };
    if (el.offsetParent) {
        var parentPosition = getDocumentOffsetPosition(el.offsetParent);
        position.top += parentPosition.top;
        position.left += parentPosition.left;
    }
    return position;
}

Благодарность ThinkingStiff для ответ , это - только другая версия его.

0
ответ дан Văn Quyết 29 August 2019 в 16:02
поделиться

Если страница включает - по крайней мере - любой «DIV», функция, заданная meouw, выбрасывает значение «Y» за пределы текущей страницы. Чтобы найти точное положение, вам нужно обработать как offsetParent, так и parentNode.

Попробуйте использовать приведенный ниже код (он проверен на FF2):


var getAbsPosition = function(el){
    var el2 = el;
    var curtop = 0;
    var curleft = 0;
    if (document.getElementById || document.all) {
        do  {
            curleft += el.offsetLeft-el.scrollLeft;
            curtop += el.offsetTop-el.scrollTop;
            el = el.offsetParent;
            el2 = el2.parentNode;
            while (el2 != el) {
                curleft -= el2.scrollLeft;
                curtop -= el2.scrollTop;
                el2 = el2.parentNode;
            }
        } while (el.offsetParent);

    } else if (document.layers) {
        curtop += el.y;
        curleft += el.x;
    }
    return [curtop, curleft];
};

35
ответ дан 22 November 2019 в 20:19
поделиться

jQuery . offset () получит текущие координаты первого элемента или установит координаты каждого элемента в наборе согласованных элементов относительно документа.

14
ответ дан 22 November 2019 в 20:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: