我正在用PhoneGap構建iOS應用程序。我正在使用translate3d CSS動畫來創建「翻轉」效果。webkit translate3d問題(偷看)
這對於更簡單的元素很有效......一個DIV與前/後divs,也許一個額外的跨度或兩個。
但是,當我試圖翻轉更大的元素,即整個屏幕,我得到重繪毛刺。當我交換css類開始轉換時,會發生什麼事情,「底部」div的某些部分彈出「頂部」div,然後發生翻轉,然後再次彈出。它並不是通過...顯示的整個元素,它是沿軸進行拆分的元素的一半,我正在執行翻譯3d旋轉。
任何想法或理論是什麼可能導致此?它在iPad上作爲應用程序發生,在Safari上也發生在桌面上,因此似乎是webkit問題。
難道是一些CSS問題?或者正在嘗試使用大型背景圖像的複雜嵌套元素進行全屏translate3d旋轉,而Safari只能處理這些元素?
更新1:
我在縮小問題上取得進展。
發生了什麼事情是,當我做translate3d翻轉時,「偷看」元素恰好是之前通過translate3d定位的子元素。
我的頁面「的結構,我想translate3d轉型:
<div id="frontbackwrapper">
<div id="front">
</div><!--/front-->
<div id="back">
</div><!--/back-->
</div><!--/frontbackwrapper-->
這適用於它自己。前面的div被後面的div替換爲卡片翻轉效果。
的問題是拼盡了全力翻頁之前,我已經在動畫DIV #front
使用translate3d內的一些要素:
<div id="frontbackwrapper">
<div id="front">
<div class="modal"></div>
</div><!--/front-->
<div id="back">
</div><!--/back-->
</div><!--/frontbackwrapper-->
範例CSS:
.modal {
width: 800px;
height: 568px;
position: absolute;
left: 112px;
z-index: 100;
-webkit-transition-duration: 1s;
-webkit-transform: translate3d(0,-618px,0); /* set off screen by default */
}
.modal.modalOn {
-webkit-transform: translate3d(0,80px,0); /* slides the div into place */
}
If--而不是使用translate3d - 我只是重新定位div的top
風格或轉換top
屬性,我沒有得到偷看問題。當然,這意味着我必須分別放棄漂亮的動畫或硬件加速。
在這一點上,它看起來像一個webkit的bug。我會繼續玩一些。如果有人遇到過這種情況,並找到了解決辦法,我全是耳朵!
@IanJamison我知道這個答案現在已經有好幾年了,但是我不知道把'one'改爲'on'是正確的。 'on'基本上和我所理解的一樣(只要有人打電話),但它不會在完成時刪除事件處理程序。我真的不記得這是否會在這個特定的應用程序中發揮作用,但似乎有時候有一個非常有意的理由與一個人對比。 –