Jquery 绝对位置问题

Jquery 绝对位置问题,jquery,html,css,Jquery,Html,Css,我试图在元素a上设置元素B的绝对位置 var left = $('#elementA').offset().left; var top = $('#elementA').offset().top; --------------------------- | ----------- | | |o | | | | | | | | |

我试图在元素a上设置元素B的绝对位置

var left = $('#elementA').offset().left;

var top  = $('#elementA').offset().top;


---------------------------
|    -----------           |    
|   |o          |          |        
|   |           |          |
|   |           |          |
|   |           |          |    
|    -----------           |
|--------------------------
o是我的元素

我想把元素B和元素A放在同一个位置

$('elementB').css({ position:'absolute',
            top:top,
            left:left}) 


---------------------------
|    -----------          | 
|   |o          |         |     
|   |  b        |         |
|   |           |         |
|   |           |         | 
|    -----------          |
|--------------------------
b means my element b
但结果是如上所述

如果我设定

$('elementB').css({ position:'absolute',
            top:0,
            left:0})
它会起作用的。但是我有很多不同的元素B和元素A,我不能对所有的元素都使用0

有人能帮我吗?非常感谢

函数offset()将提供窗口中元素的偏移量。 您需要的是elementA在其容器中的相对偏移量

尝试position()而不是offset()

根据另一个例子:

当一个元素是另一个元素的子元素时,绝对定位对于窗口来说并不是绝对的,而是相对于其父元素的绝对定位。如果希望div的左上角与其父级的左上角完全对齐,则希望它的
top
left
与父级之间的距离为零像素。它只是绝对的,因为它忽略了所有其他可能会将其移出位置的项


当B是a的子元素时,对于B需要与a对齐的每种情况,只要始终将其左上方设置为0。

您可以使用jQuery UI Position插件相对于任何其他元素定位任何元素。见:

在您的情况下,它将是:

$('#elementB').position({
  my: 'left top',
  at: 'left top',
  of: '#elementA'
});
此外,我认为在css属性的值中添加“px”是一种很好的做法,例如:

$('...').css({
    left: 100 + 'px'
});

如上所述,您应该始终考虑元素之间的相对位置。如果父元素处于“定位”状态,则子元素的定位将不是相对于窗口,而是相对于其父元素。如果您想要更大的灵活性,可以将元素B从元素A中删除(使其成为兄弟元素)。

请包含您正在使用的HTML内容。元素A和B是否包装在另一个元素中?如果是这样的话,绝对位置是相对于包裹它的元素的。我们能看到一些代码吗?对我来说非常好: