2016-10-22 7 views
4

レスポンシブルサイトでCSS3トランジションを使用しようとしていますが、デスクトップのChromeとAndroidのChromeで完全に機能していますが、両方のデバイスで正しく動作しませんクロムとサファリ。CSS3移行が遅い/動作しない

私は私のメニューのために使用していCSSスニペット、例えば、以下の通りです:

#menu { 
width: 180px; 
height: 100%; 
position: fixed; 
top: 0; 
left: -180px; 
z-index: 9; 
transition: left 1s; 
-webkit-transition: left 1s; 
} 

私は、クリックされたときに「左」のスタイルを変更するJavaScript関数を呼び出すメニューボタンを持っています0であり、画面の左側から外側に移動します。

デスクトップとChromeのAndroidではすべてうまく動作しますが、ChromeとSafariでは非常に不安定になるか、ちょっと遅れて瞬時にポップアップします。私のトランジションのすべてでこれをやっていますが、私は簡単にメニュー1を表示しています。

私はスタックを介しグーグルと検索の多くを行っているが、私は実際に見つけた唯一のものは、以下を追加すると言う:

-webkit-backface-visibility: hidden; 
-webkit-perspective: 1000; 
-webkit-transform: translate3d(0, 0, 0); 

スタイルにハードウェアアクセラレーションを強制するが、それはどちらか動作していないです。私は全く変化は見ません。どんな助けもありがとう。

+1

回避をtransform: translateX(0)を使ってみて、それが変換 '使用してみてください代わりに、リソースの多くを取る:移動X(0)'水平調整のため – Swordys

+0

@Swordys私は小切手を差し上げます。なぜなら、私は最近まで、特にモバイル用ではなく、トランジションを実際に試みていないからです。私はまた、不安定さと同じ問題を抱えています/配置を変更しない要素には作用しませんが、最大高さと不透明度の遷移があります。それらのすべてにtransformを使うのが一番ですか? – Jetteh22

+0

はい、アブソリュート要素に多くのトランジションを使用している場合は、パフォーマンスに大きな影響を与えます。遷移を使用することは、スムーズな経験のためのベストプラクティスです。 'will-change:transform'を使ってハードウェアアクセラレーションを強制することもできますが、現在はSafariブラウザではサポートされていません。 – Swordys

答えて

4

絶対位置の遷移を使用することは避けてください、それは多くの資源を要し、代わりに水平調整のための絶対位置の遷移を使用して

+0

これはメニューのために完全に機能しました。 'transition:max-height 1s、opacity 1s'をどうやって不安定にならないようにするかについてのアドバイスは?不透明度や最大高さの変換を見つけることができないようです。 – Jetteh22

+0

秒表示の後に 'ease-out'や' ease'のような遷移タイミング関数を使ってみましたか? – Swordys

+0

私は 'ease-in-out'、' ease'と 'linear'を使ってみましたが、それは同じことです。私はちょうど簡単なテストをしました。それは問題を抱えている「最大高さ」の移行です。 '不透明度'はスムーズに遷移しますが、 '最大高さ 'を遷移させようとすると、それは不安定です。私がこれでやっていることは、 'height:auto;'に移行するための回避策の1つです。それはうまくいきません。 – Jetteh22

関連する問題