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

Max*_*Max 135 css jquery positioning css-position jquery-selectors

.offset([coordinates])method设置元素的坐标,但仅相对于文档.那么我如何设置元素的坐标但相对于父元素的坐标?

我发现该.position()方法只获得相对于父级的"top,left"值,但它没有设置任何值.

我试过了

$("#mydiv").css({top: 200, left: 200});
Run Code Online (Sandbox Code Playgroud)

但不起作用.

Cha*_*amp 217

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

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

这是有效的,因为position: absolute;相对于最接近的定位父级(即,具有除默认值之外的任何位置属性的最近父级)的位置static.

  • `$("#mydiv").css({top:'200px',left:'200px',position:'absolute'});`< - good` $("#mydiv").css({top :'200',左:'200',位置:'绝对'});`< - 坏.显然,如果position**值是字符串**,则必须包含单位,否则它将无效. (11认同)

小智 37

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

$("#mydiv").css('left', 200);
Run Code Online (Sandbox Code Playgroud)

  • 更多的指示会有所帮助 (7认同)

xda*_*azz 13

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

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

检查工作演示.

  • .position()没有setter (10认同)
  • 是的,我错了。用jQuery UI的位置更新答案。 (2认同)

Der*_*ade 5

我发现如果传递的值是字符串类型,则必须后跟'px'(即90px),其中如果值是整数,它将自动附加px.宽度和高度属性更宽容(两种类型都有效).

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
Run Code Online (Sandbox Code Playgroud)


小智 5

动态页面的代码偏移量动态

var pos=$('#send').offset().top;
$('#loading').offset({ top : pos-220});
Run Code Online (Sandbox Code Playgroud)