Javascript 如何使用三维变换获取元素的未转换位置/大小?

Javascript 如何使用三维变换获取元素的未转换位置/大小?,javascript,jquery,html,css,css-transforms,Javascript,Jquery,Html,Css,Css Transforms,我正在创建类似于3D地图的东西,在这里我需要能够放大某些元素,同时使用CSS3 3D变换。我已经计算出,如果在任何旋转之前应用平移,您可以非常简单地使用未转换的2D坐标来执行此操作 我现在的问题是获取一个元素的未转换2D属性,以便我可以移动“摄影机”来聚焦和缩放该元素 在应用3D变换之前,我曾尝试存储原始属性,但这是不可靠的,而且很粗糙,因为它不考虑视口更改,有时会给出奇数,好像父容器小得多: var contentChildren = $("#content3d").children().ea

我正在创建类似于3D地图的东西,在这里我需要能够放大某些元素,同时使用CSS3 3D变换。我已经计算出,如果在任何旋转之前应用平移,您可以非常简单地使用未转换的2D坐标来执行此操作

我现在的问题是获取一个元素的未转换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());
});

那么,如何获得正在进行三维转换的元素的未转换属性呢?

您可以尝试使用jquery中的.data函数,据我所知,它非常直接而且非常可靠

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

ref:

当我说它不可靠时,我的意思是它不考虑视口的变化,有时,它会直接保存不合逻辑的数字。对不起,我应该说清楚。这太奇怪了,你有没有试过在转换之前克隆元素并直接从原始源获取数据?没有-我已经决定在DOM之外显式定义位置数据,但是我没有回答这个问题。