在jQuery中,如何设置元素的“顶部,左侧”属性相对于父级而不是文档的位置值?

.offset([coordinates])方法设置元素的坐标,但仅相对于文档。 那我怎么能设置一个元素的坐标,但相对于父项?

我发现.position()方法只获取相对于父对象的“顶”,“左”值,但是它没有设置任何值。

我试着用

 $("#mydiv").css({top: 200, left: 200}); 

但不起作用。

要设置相对于父级的位置,您需要设置position:relative父级和position:absolute position:relative position:absolute元素的position:absolute

 $("#mydiv").parent().css({position: 'relative'}); $("#mydiv").css({top: 200, left: 200, position:'absolute'}); 

这工作,因为position: absolute; 相对于最接近定位的父母(即,具有除默认static以外的任何位置属性的最近父母)定位。

 $("#mydiv").css('top', 200); $("#mydiv").css('left', 200); 

你可以试试jQuery UI的.position方法。

 $("#mydiv").position({ of: $('#mydiv').parent(), my: 'left+200 top+200', at: 'left top' }); 

检查工作演示。

dynamic页面的代码偏移dynamic

 var pos=$('#send').offset().top; $('#loading').offset({ top : pos-220}); 

我发现,如果传递的值是一个stringtypes,它必须后跟“px”(即90px),如果该值是一个整数,它将自动附加px。 宽度和高度属性更宽容(任何types的作品)。

 var x = "90"; var y = "120" $(selector).css( { left: x, top: y } ) //doesn't work $(selector).css( { left: x + "px", top: y + "px" } ) //does work x = 90; y = 120; $(selector).css( { left: x, top: y } ) //does work