2011-08-17 56 views
1

我想绝对定位飘来一些使用此代码的div:奇怪的行为时,绝对定位浮动元素

$(function() { 
    $('#wrapper div').each(function(index, item) { 
     alert($(this).position().left); 
     $(this).css({position:'absolute', top:$(this).position().top, left:$(this).position().left}); 
    }); 
}); 

我无法弄清楚究竟是为什么当我设置的位置是:绝对$(本) .position()总是返回{top:0,left:0}。我怎样才能获得正确的坐标,并将位置设置为绝对?

我已经建立了一个的jsfiddle来说明这个http://jsfiddle.net/SxJCb/4/

回答

2

简短的回答:

只设置topleft所有div秒。一旦完成,然后设置为position: absolute所有这些。

参见:http://jsfiddle.net/thirtydot/SxJCb/6/

$('#wrapper div').each(function(index, item) { 
    $(this).css({top:$(this).position().top, left:$(this).position().left}); 
}).css({position:'absolute'}); 

龙答:

所有div s的浮动(这是怎么回事的说明)。如你所知,每个div被设置为position: absolute而被从正常流量中移除,所以后面的所有div都被移回了一个地方。因此,第二div移动到第一个是等

这里是发生了什么事的慢动作演示:http://jsfiddle.net/thirtydot/SxJCb/7/

+0

我想这可能是类似的东西怎么回事。感谢您的解释。完美后,将位置设置为绝对。 – cbaigorri

0
var x = $("#wrapper div").offset().left; 
var y = $("#wrapper div").offset().top; 

这可以帮助

0

你可能需要设置CSS值时,“PX”追加到顶部的结束和left属性直。