Sek*_*eka 3 css css3 perspective translate3d
我想做以下事情:给定一个带透视的容器和一个带有translateZ值的内部元素,我想用translateY"拉起来"以便在视觉上触摸周围容器的顶部:http:// jsfiddle达网络/ 8R4ym/129 /
是否存在某种公式,给定容器的透视值,元素的宽度和高度以及它的Z-平移我可以得到那种"顶部"计算?我一直在玩它,但我似乎无法找到它的一些规则,因为似乎这些都是变量.
谢谢你的帮助.
是!
实际上有一个非常简单的公式来找到偏移量 - 维基百科上的3D Projection文章有一个图表和公式.
公式是bx = ax * bz / az
:
ax
是距变换原点的原始距离az
是观点+负面 translateZ
bz
是透视这会给你:
bx
- 距变换原点的新距离所以,你需要知道:
bz
:在perspective
(例如:1000px
)ax
:变换原点的偏移量,例如:如果原点是50%那么这需要是元素top
相对于父元素的中心(parent.height/2 + element.top
) - 让我们说-500px
z
:元素的translateZ
(如:-600px
)az
那么bz + z * -1
,在这种情况下:1000 + (-600 * -1) = 1600
所以公式是: -500 * 1000 / 1600 = -312.5
元素-312.5px
从原点垂直偏移,而最初它是偏移的-500px
,两个数字之间的差异是您需要添加到旧top
值以获得等效的新值.
该公式也适用于Y轴.
我在这里放了一个简单的例子:http://jsfiddle.net/trolleymusic/xYRgx/