计算CSS Transform的translateZ

时间:2013-04-28 00:51:58

标签: css3 safari transform clipping

使用transform属性时遇到了一个问题。

我有一个简单的DIV填充屏幕,另一个DIV位于它上面。

我将以下转换应用于DIV:

'transform':'rotateX(Xdeg)rotateY(Ydeg)'; 我也在使用preserve-3d

除Safari外,所有浏览器都能完美运行。根据我的阅读,Safari是唯一一个实际上正确的,并剪切了应用变换的顶级DIV。其他浏览器不会剪辑DIV。基本上,当DIV旋转时,它会进入底层DIV的内部/后面。

所以,我假设我需要使用translateZ来推动顶级DIV前进?

我的问题是,如何计算我需要沿Z轴向前翻译div,或者让它在Safari中运行?旋转X和Y将是变量,因此用户可能能够沿着X,Y,两者旋转元素或者根本不旋转元素。

对此的任何帮助都会很棒。谢谢!

2 个答案:

答案 0 :(得分:0)

您的X和Y值是否总是正值?

在这种情况下,

transform-origin 0% 0% 

应该做的伎俩(使旋转中心成为结果中较低的点)

如果没有,你只需要一点逻辑:

如果X角度为正,则x原点为0%,否则x原点为100%

如果Y角度为正,则y原点为0%,否则y原点为100%

然后,申请

transform-origin x-origin y-origin

答案 1 :(得分:0)

如果没有jsFiddle,我无法重现您的问题。您可以使用element.getBoundingClientRect()之类的函数。这将为您提供第二个转换div的当前坐标。如果将这些与第一个div的坐标进行比较,您应该找到所需的translateZ。你需要比较转换后的div的所有4个角。负DELTA表示该角与第一个div相交。