如何获得元素的正确偏移量?-jQuery

如何获得元素的正确偏移量?-jQuery,jquery,offset,Jquery,Offset,这可能是一个非常简单的问题,但是如何在jQuery中正确地获得元素的偏移量 我可以做到: $("#whatever").offset().left; 这是有效的 但似乎: $("#whatever").offset().right 没有定义 那么如何在jQuery中实现这一点呢 谢谢 var $whatever = $('#whatever'); var ending_right = ($(window).width() - ($whatever.offset().l

这可能是一个非常简单的问题,但是如何在jQuery中正确地获得元素的偏移量

我可以做到:

$("#whatever").offset().left;
这是有效的

但似乎:

$("#whatever").offset().right 
没有定义

那么如何在jQuery中实现这一点呢

谢谢

var $whatever        = $('#whatever');
var ending_right     = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));

参考资料:

也许我误解了你的问题,但是偏移量应该给你两个变量:水平和垂直。这定义了元素的位置。因此,您需要的是:

$("#whatever").offset().left

如果需要知道图元的右边界在哪里,则应使用:

$("#whatever").offset().left + $("#whatever").outerWidth()

这只是格雷格所说的补充:

$(“#任意”).offset().left+$(“#任意”).outerWidth()

此代码将获得相对于左侧的正确位置。如果目的是获得相对于右侧的右侧位置(如使用CSS
right
属性时),则需要添加代码,如下所示:

$(“#父容器”).innerWidth()-($(“#任意”).offset().left+$(“#任意”).outerWidth())


这段代码在动画中很有用,当你不能在CSS中初始设置
right
属性时,你必须将右侧设置为固定锚点。

Brendon Crawford在这里得到了最好的答案(在注释中),所以我将把它移到一个答案,直到他这样做为止(可能会展开一点)

亚历克斯,加里:

根据要求,以下是我的评论作为答复:

var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
谢谢你让我知道

在伪代码中,可以表示为:

右偏移量为:

窗口为负

(元素加上元素)

实际上,只有当窗口完全没有从左上角滚动时,这些才起作用。
您必须减去窗口滚动值,以获得一个偏移量,该偏移量对于重新定位元素非常有用,以便它们保持在页面上:

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));

获取
div/table的锚点(左)=$(“#无论什么”).offset().left-好的


获取
div/表(右)
的锚定点,您可以使用下面的代码

 $("#whatever").width();

有一个本机DOM API可以实现这一点:


我认为需要加上它们,然后减去1。如果宽度是2,那么左边是10,右边不是12而是11。这是一个错误的答案。在CSS中,“left”表示“元素最左侧点与窗口/父对象左侧的偏移量”,“right”表示“元素最右侧点与窗口/父对象右侧的偏移量”。因此,正确的答案是:
var rt=($(window.width()-($whater.offset().left+$whater.outerWidth())
@BrendonCrawford您应该将该注释移动到一个答案。任何人都要注意-上面的答案已被编辑,以正确反映Brendon的注释。这不适用于CSS转换,偏移量将受转换的影响,但受外径(和宽度)的影响不会。这是从窗口右侧的偏移量。有关窗口左侧的偏移量,请参见cdZ。元素的最右侧边缘可以更“本地”地找到
$which[0]。getBoundingClientRect().right
。这是相对于窗口的左边缘。谢谢brendon。有用的答案。但是getBoundingClientRect返回的是相对于视口的,而不是相对于文档的,这是offset()提供的。
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));
 $("#whatever").width();
document.querySelector("#whatever").getBoundingClientRect().right