2012-11-01 40 views
0

我正在创建类似于3D地图的东西,我需要在使用CSS3 3D变换的同时放大某些元素。我已经计算出,如果在任何旋转之前应用翻译,则可以非常简单地使用未转换的2D坐标来执行此操作。如何使用3D变换获取未变换的元素的位置/大小?

我现在的问题是得到一个元素的未转换2D属性,以便我可以移动'相机'来聚焦和放大到所述元素。

我已经尝试在应用3D转换之前存储原始属性,但这不可靠并且很不方便,因为它没有考虑视口更改,有时会给出奇数,就好像父容器更小一样:

var contentChildren = $("#content3d").children().each(function(index, element){ 
    $(this).attr("flatleft", $(this).position().left); 
    $(this).attr("flattop", $(this).position().top); 
    $(this).attr("flatwidth", $(this).width()); 
    $(this).attr("flatheight", $(this).height()); 
}); 

那么,我怎么能得到一个元素的未转换的属性被转换为3D?

回答

1

你可以尝试在jquery中使用.data函数,就我所知,它的直观性和可靠性非常可靠。

$(this).data("flatleft", $(this).position().left); 

裁判:http://api.jquery.com/data/

+0

当我说,这是不可靠的,我的意思是它不占视口的变化,有时,直接节省了不合逻辑的数字。我应该说清楚,对不起。 –

+0

这是非常奇怪的,你有没有尝试在转换之前克隆元素,并直接从原始数据中获取数据? – roacher

+0

否 - 我自此决定明确定义DOM以外的位置数据,但是我将这个问题留给公开。 –