如何正确的偏移一个元素? – jQuery
这可能是一个非常简单的问题,但是我怎样才能获得jQuery中元素的正确偏移呢?
我可以:
$("#whatever").offset().left;
这是有效的。
但似乎是:
$("#whatever").offset().right
未定义。
那么在jQuery中如何做到这一点呢?
谢谢!!
Alex,Gary:
根据要求,这里是我的评论张贴为答案:
var rt = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
谢谢你让我知道。
var $whatever = $('#whatever'); var ending_right = ($(window).width() - ($whatever.offset().left + $whatever.outerWidth()));
参考: .outerWidth()
也许我误解了你的问题,但是抵消应该给你两个variables:水平和垂直。 这定义了元素的位置。 所以你要找的是:
$("#whatever").offset().left
和
$("#whatever").offset().top
如果您需要知道元素的正确边界在哪里,那么您应该使用:
$("#whatever").offset().left + $("#whatever").outerWidth()
只是格雷格说的一个补充:
$(“#whatever”)。offset()。left + $(“#whatever”)。outerWidth()
这段代码将得到相对于左侧的正确位置。 如果目的是为了获得右侧的权利(如使用CSS right
属性),那么代码的添加是必要的,如下所示:
$(“#parent_container”)。innerWidth() – ($(“#whatever”)。offset()。left + $(“#whatever”)。outerWidth())
这个代码在animation中非常有用,当你不能在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));
有一个原生的DOM API可以实现这个function – getBoundingClientRect
:
document.querySelector("#whatever").getBoundingClientRect().right
获取div/table (left) = $("#whatever").offset().left;
的定位点div/table (left) = $("#whatever").offset().left;
– 好!
获得一个div/table (right)
的锚点,你可以使用下面的代码。
$("#whatever").width();