这可能是一个非常简单的问题,但我该如何获得jQuery中元素的正确偏移?如何获得一个元素的正确偏移量? - jQuery
我可以这样做:
$("#whatever").offset().left;
,它是有效的。
但似乎:
$("#whatever").offset().right
是不确定的。
那么,如何在jQuery中完成这项工作呢?
谢谢!
这可能是一个非常简单的问题,但我该如何获得jQuery中元素的正确偏移?如何获得一个元素的正确偏移量? - jQuery
我可以这样做:
$("#whatever").offset().left;
,它是有效的。
但似乎:
$("#whatever").offset().right
是不确定的。
那么,如何在jQuery中完成这项工作呢?
谢谢!
亚历克斯,加里:
按照要求,这里是我的评论张贴作为一个答案:
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
谢谢你让我知道。
var $whatever = $('#whatever');
var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
我认为需要添加它们,然后减去1.如果宽度是2,那么剩下的是在10 ,并且右边不是12而是11. – 2010-06-15 07:02:26
这是不正确的答案。在CSS中,“left”意味着“窗口/父窗口左侧的元素的最左点的偏移量”,“右”意味着“窗口/父窗口右侧的元素的最右点的偏移量”。所以,正确的答案是:'var rt =($(window).width() - ($ whatever.offset()。left + $ whatever.outerWidth()));' – 2011-12-14 10:58:24
人们怎么没注意到这是不正确的答案:0 – 2011-12-28 22:15:55
也许我误解你的问题,但偏移应该给你两个变量:水平和垂直。这定义了元素的位置。所以,你要寻找的是:
$("#whatever").offset().left
和
$("#whatever").offset().top
如果你需要知道你的元素的右边界,那么你应该使用:
$("#whatever").offset().left + $("#whatever").outerWidth()
这是一个让元素正确的技巧。 谢谢Greg! – n2lose 2011-02-24 07:04:43
只是格雷格说的一个补充:
$(“#whatever”)。offset()。left + $(“#”无论“)。outerWidth()
此代码将获得相对于左侧的正确位置。如果目的是为了获得相对右侧位置向右(使用CSS right
属性时等),那么除了代码是必要如下:
$(“#parent_container”)innerWidth( ) - ($(“#whatever”)。offset()。left + $(“#whatever”)。outerWidth())
此代码在需要将右侧设置为当您最初无法在CSS中设置right
属性时,它是一个固定锚点。
Brendon Crawford在这里有最好的答案(在评论中),所以我会把它移到一个答案,直到他确实(也许会扩大一点)。
var offset = $('#whatever').offset();
offset.right = $(window).width() - (offset.left + $('#whatever').outerWidth(true));
offset.bottom = $(window).height() - (offset.top + $('#whatever').outerHeight(true));
实际上,这些仅在窗口没有从左上角滚动时才起作用。
你必须减去窗口滚动值获得的偏移,使他们在网页上停留的重新定位元素有用:
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 (left) = $("#whatever").offset().left;
的定位点 - OK!
获取div/table (right)
的定位点,您可以使用下面的代码。
$("#whatever").width();
有一个内在的DOM API,它实现这一开箱 - getBoundingClientRect
:
document.querySelector("#whatever").getBoundingClientRect().right
但getBoundingClientRect返回相对于与文档无关的视口,这是offset()提供的内容。 – 2017-04-05 23:40:52
这不适用于CSS转换,偏移将受转换影响,但outerWidth(和width)不会。 – 2014-12-29 16:37:05
这是从窗口右侧的偏移量。对于窗口左侧的偏移量,请参阅cdZ的[答案](http://stackoverflow.com/a/5643921/675721)。 – 2015-10-08 21:13:01
元素的最右边可以被更多地“本地”找到$ whatever [0] .getBoundingClientRect()。right'。这是相对于窗口的左边缘。 – pstanton 2017-10-03 05:45:48