基本上,您试图弄清楚如何将对象放置在 3D 空间中,使其与 2D 视口对齐。这总是一件棘手的事情。
我不知道数学是什么,大多数其他人可能也不知道。这几乎不是一个普遍的问题。但这就是我要弄清楚的方法。
这里唯一的变量是width
。需要根据宽度更改的 2 个值-webkit-perspective
位于容器和-webkit-transform
内部元素上。所以我会手动编辑几个不同宽度的值,并记录你必须输入的 3D 值以使事情看起来正确。(我会使用网络检查器实时编辑值,以便您立即获得反馈)
一个你有几个数据点,将它们绘制在图表上,然后尝试弄清楚它们是如何变化的。我有一种预感,它是一条抛物线,但它也可能是双曲线或正弦曲线,我的 3D 数学还不够好,无法确定。
然后你可以试着找出一个方程,当你输入你采样的宽度时,你会得到你之前设置的手动 3D 值。然后用 JS 读取容器的宽度,设置 CSS 值使其看起来正确。
我用 3 个宽度 300、450、600 做到了这一点:
http://jsfiddle.net/24qrQ/3/
一些趋势是显而易见的。随着宽度的增加,透视以增加的速率上升,而旋转以增加的速率下降。
找出确切的公式,现在由您决定。
作为一种更简单的选择,如果计算公式变得太困难,您可以手动选择一些看起来不错的宽度和 3D 值并将它们存储在 JS 中的某个地方。然后你可以在它们之间进行线性插值。这不会是准确的,但它可能已经足够接近了。
它也将不那么有趣!