2012-04-18 11 views
1

-webkit-transformで奇妙な問題が発生しました。 perspectiverotateXを使用して要素を「フリップアップ」させると、要素の高さが十分であれば、一定の角度を超えてちらつくか、レンダリングされません。-webkit-transformの点滅/レンダリングの問題

問題を説明するjsFiddle demoを設定しました。マウスを左右に動かすと矩形が回転します。

  • 要素は背の高い400ピクセルである場合には、すべてが正常に動作するようです。

  • "4000"をクリックして、要素の高さを4000pxにします。 テキストは特定の範囲内のの更新を停止し、のレンダリングはflickeryです。

  • 「40000」をクリックすると、40000pxの高さになります。それは小さい角度で細かくレンダリングしますが、は完全に約80度で消えます

ここでは何が起こっていますか?回避策がありますか、WebKitバグを提出する必要がありますか?

(注:私は、OS X上のSafariとChromeの両方で、この動作を参照してください)

+0

は、Windows上のChromeで正常に見える – nhinkle

答えて

3

このコードの問題はCSS3perspective財産です。要素の高さが4000px以上になると、画面に近づくと表示されなくなります(perspectiveプロパティで定義されています)。
要素が高くなると、要素はさらに離れて表示されます。

は、私は別の視点は、要素の高さに応じて取得するには、いくつかのif文を作った:。私は間違ったフィドルを使用していない限り、

if (document.getElementById("m2").offsetHeight == 400) { 
    document.getElementById("m2").style.webkitTransform = "perspective(500) rotateX(" + (e.clientX/5) + "deg)"; 
} 

if (document.getElementById("m2").offsetHeight == 4000) { 
    document.getElementById("m2").style.webkitTransform = "perspective(5000) rotateX(" + (e.clientX/5) + "deg)"; 
} 

if (document.getElementById("m2").offsetHeight == 40000) { 
    document.getElementById("m2").style.webkitTransform = "perspective(50000) rotateX(" + (e.clientX/5) + "deg)"; 
} 
+0

私はもっと後でこれをテストします、クイックテストでは少しでもちらつかれているように見えますが(それほど悪くはありませんが)、もちろん、これは視覚効果を大きく変えます。知覚される視点を変えずに何か似たようなことをする? – jtbandes

+0

いつちらつきますか? 「#m2」が大きく、その角度が90度に近づくのはそれですか? – Daniel

+0

うん。私が見ていることを示す[ビデオはこちら](http://cl.ly/1V3e1x1i201K1L3Z3h3C) - オリジナルバージョンとあなたのバージョンの両方を記録しました。 – jtbandes