在iOS (iPhone 4s/ iPad 2/iPod Touch) 上測試 Mobile Web的時候出現了閃爍問題
和Team member 花了一段時間發現一個很詭異的問題
狀況
1. 父節點(DIV)因為要做Transition使用了
transform: translate3d(…)
2. 畫面處理完成後,觸動事件將子節點(DIV)的CSS改變
left : *px
就在這個更改子節點的瞬間 iOS 的畫面一定會閃爍一下
測試過了 iPad / iP4s / iPod Touch 都有這問題 但是Android 2.x 4.x 都沒有…
處理方式
原本以為是iOS 的 webkit 在處理特定 position 的 left 造成子節點重畫的問題,
後來想想覺得這
像是StackOverflow 這篇 還有 這篇 他是改 CSS top 導致發生神秘的閃爍事件…
最後使用動態增加translatde3d 並且 reset 的
後來將以下的 css 指定給子節點 問題就解決了
transform: translate3d(0,0,0);-webkit-transform: translate3d(0,0,0);
補充
回家後看到jsconsole/jsbin的作者 Remy Sharp 大大的影片
造成我畫面閃動的原因 應該是跟iOS的硬體加速有關
故需要Reset translate3d …..
References
http://stackoverflow.com/questions/tagged/translate3d
No comments:
Post a Comment