序文
次の 2 つの要件を満たすナビゲーション メニューを備えたレスポンシブ Web サイトを作成しようとしています。
- ナビゲーションは、水平に配置された通常のブラウザ ウィンドウで完全に表示されます。
- ナビゲーションは、モバイル デバイスと小さな画面用の切り替え可能な垂直メニューになり、「開いた」状態と「閉じた」状態の間でアニメーション化されます。
モバイル デバイス (特に iOS) でのパフォーマンスを向上させたいと考えています。つまり、アニメーションでは、GPU で高速化された translate3d 変換CSS トランジションを使用する必要があります。
私の問題
これを設定するのは簡単で、ほとんどの場合うまく機能します。と を使用z-index: 1
して、デフォルトの閉じた状態でtransform: translate3d(0,-100%,0)
ヘッダーの背後にあるメニューを非表示にしてから、メニューを開いた状態にアニメーション化しました。z-index: 2
transform: translate3d(0,0,0)
しかし、問題が 1 つあります。Chrome ブラウザ ウィンドウのサイズを変更してモバイル メディア クエリが起動すると、メニューが開いた状態から閉じた状態にアニメーション化されます。
ブラウザー ウィンドウのサイズを 600px 未満に変更して、実際の問題を確認します。
- フルスクリーン jsfiddle: http://fiddle.jshell.net/ymDYG/1/show/
- 元の jsfiddle: http://jsfiddle.net/ymDYG/1/
なぜこれが起こっているのかはわかっていると思います。モバイル メディア クエリが起動すると、ブラウザはそれ.nav
が現在アクティブではないことを認識し、デフォルトの閉じた状態にアニメートします。display:none
さまざまなメディア クエリの状態に対してとを試してみましdisplay:block
たが、アニメーションが完全に壊れているようです。
ブラウザ ウィンドウのサイズが変更されたときに、ナビゲーション メニューの「閉じる」アニメーションが起動しないようにするにはどうすればよいですか?