如何获得元素的正确偏移量?-jQuery
这可能是一个非常简单的问题,但是如何在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
$("#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