.offset([coordinates])
方法设置元素的坐标,但仅相对于文档。那么如何设置元素的坐标但相对于父级?
我发现该.position()
方法仅获取相对于父级的“顶部,左侧”值,但它没有设置任何值。
我试过了
$("#mydiv").css({top: 200, left: 200});
但不起作用。
.offset([coordinates])
方法设置元素的坐标,但仅相对于文档。那么如何设置元素的坐标但相对于父级?
我发现该.position()
方法仅获取相对于父级的“顶部,左侧”值,但它没有设置任何值。
我试过了
$("#mydiv").css({top: 200, left: 200});
但不起作用。
要设置相对于父级的位置,您需要设置position:relative
父级和position:absolute
元素的
$("#mydiv").parent().css({position: 'relative'});
$("#mydiv").css({top: 200, left: 200, position:'absolute'});
这是因为position: absolute;
位置相对于最近定位的父级(即,具有除 default 之外的任何位置属性的最接近的父级static
)。
$("#mydiv").css('top', 200);
$("#mydiv").css('left', 200);
我发现如果传递的值是字符串类型,后面必须跟'px'(即90px),如果是整数,它会自动追加px。width 和 height 属性更宽容(任何一种都可以)。
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
动态页面的代码偏移量动态
var pos=$('#send').offset().top;
$('#loading').offset({ top : pos-220});
记忆中的定位,我来的这么晚,不知道有没有人会看到,但是——
我不喜欢使用 设置位置css()
,尽管通常它很好。我认为最好的办法是使用position()
xdazz 所指出的 jQuery UI 的 setter。但是,如果 jQuery UI 出于某种原因不是一个选项(但 jQuery 是),我更喜欢这个:
const leftOffset = 200;
const topOffset = 200;
let $div = $("#mydiv");
let baseOffset = $div.offsetParent().offset();
$div.offset({
left: baseOffset.left + leftOffset,
top: baseOffset.top + topOffset
});
这具有不将$div
' 父级任意设置为相对定位的优点(如果$div
' 父级本身是绝对定位在其他东西中怎么办?)。我认为唯一的主要边缘情况是 if $div
doesn't have any offsetParent
,不确定它是否会返回document
,null
或完全其他的东西。
offsetParent
从 jQuery 1.2.6 开始,2008 年的某个时候就可以使用,所以这种技术现在和当原始问题被问到时都有效。
使用offset()
的功能jQuery
。这将是:
$container.offset({
'left': 100,
'top': mouse.y - ( event_state.mouse_y - event_state.container_top )
});