Вероятно, это действительно простой вопрос, но как мне получить правильное смещение элемента в jQuery?
Я могу сделать:
$("#whatever").offset().left;
и это действительно так.
Но похоже, что:
$("#whatever").offset().right
не определено.
Итак, как этого добиться в jQuery?
Благодарность!!
$whatever[0].getBoundingClientRect().right
. это относительно левого края окна.var $whatever = $('#whatever'); var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Ссылка: .outerWidth ()
источник
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
Возможно, я неправильно понимаю ваш вопрос, но смещение должно давать вам две переменные: горизонтальную и вертикальную. Это определяет положение элемента. Итак, что вы ищете:
$("#whatever").offset().left
а также
$("#whatever").offset().top
Если вам нужно знать, где находится правая граница вашего элемента, вы должны использовать:
$("#whatever").offset().left + $("#whatever").outerWidth()
источник
Просто дополнение к тому, что сказал Грег:
Этот код получит правильную позицию относительно левой стороны. Если намерение состояло в том, чтобы получить положение правой стороны относительно правой (например, при использовании
right
свойства CSS ), то необходимо добавить в код следующее:Этот код полезен в анимациях, где вы должны установить правую сторону в качестве фиксированной привязки, когда вы не можете изначально установить
right
свойство в CSS.источник
На самом деле они работают только тогда, когда окно вообще не прокручивается из верхнего левого положения.
Вы должны вычесть значения прокрутки окна, чтобы получить смещение, которое полезно для изменения положения элементов, чтобы они оставались на странице:
var offset = $('#whatever').offset(); offset.right = ($(window).width() + $(window).scrollLeft()) - (offset.left + $('#whatever').outerWidth(true)); offset.bottom = ($(window).height() + $(window).scrollTop()) - (offset.top + $('#whatever').outerHeight(true));
источник
Есть собственный DOM API, который делает это из коробки
getBoundingClientRect
:document.querySelector("#whatever").getBoundingClientRect().right
источник
У Брендона Кроуфорда был лучший ответ здесь (в комментарии), поэтому я перейду к ответу, пока он не ответит (и, возможно, немного расширит).
var offset = $('#whatever').offset(); offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true)); offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
источник
Получение точки привязки
div/table (left) = $("#whatever").offset().left;
- ок!Для получения точки привязки
div/table (right)
вы можете использовать приведенный ниже код.$("#whatever").width();
источник