基本的に、オブジェクトを3D空間に配置する方法を理解しようとしているので、オブジェクトは2Dビューポートと整列します。それは常にトリッキーなことです。
私は数学が何であるかを知りません、そして他のほとんどはおそらくどちらも知りません。これはほとんど一般的な問題ではありません。しかし、これが私がそれを理解する方法です。
ここでの唯一の変数はですwidth
。また、幅に基づいて変更する必要がある2つの値は-webkit-perspective
、コンテナと-webkit-transform
内部要素にあります。そのため、いくつかの異なる幅の値を手動で編集し、正しく表示するために入力する必要のある3D値を記録します。(Webインスペクターを使用して値をリアルタイムで編集し、すぐにフィードバックを得ることができます)
1つは、いくつかのデータポイントがあり、それらをグラフにプロットしてから、それらがどのように変化するかを理解することです。私はそれが放物線であるという予感がありますが、それは双曲線または正弦波でもあるかもしれません、私の3D数学は確かに知るのに十分ではありません。
次に、サンプリングした幅を入力すると、以前に設定した手動の3D値が返される方程式を理解してみてください。次に、JSを使用してコンテナーの幅を読み取り、CSS値を設定して正しく表示されるようにします。
私は3つの幅300、450、600でそれを行いました:
http://jsfiddle.net/24qrQ/3/
いくつかの傾向は明らかです。幅が大きくなると、遠近感は増加する速度で上昇し、回転は増加する速度で下降します。
正確な式を理解するのはあなた次第です。
より簡単な方法として、数式を理解するのが難しくなった場合は、見栄えのするいくつかの幅と3D値を手動で選択して、JSのどこかに保存することができます。次に、それらの間を線形補間することができます。正確ではありませんが、十分に近い可能性があります。
それも面白くないでしょう!