2013-05-22 9 views
10

ここでは単純なメディアクエリを持つCSSが少しあります。ブラウザの最大化とタブの切り替え時に、メディアクエリでCSSが変更されない

http://codepen.io/anon/pen/nuxaw

ビューポート未満320となるように、私はページを縮小するとき、ボックスが緑色に変わり。これらの手順を実行すると、ブラウザは最大化されますが、CSSは320pxのメディアクエリで定義された状態になります。最初のタブで開いたページ、および< 320PXメディアクエリーが有効になっているようなサイズのブラウザで

  1. 新しいタブを開くには、facebook.comのように、ウェブサイトを参照します。
  2. ブラウザを最大化します。
  3. 最初のタブから離れてブラウズセッションを延長します。最初のタブを数分間再アクティブ化しないでください。
  4. ウィンドウを最大化して最初のタブをアクティブにします。
  5. この時点で、ビューポートはフルスクリーンでなければなりませんが、要素はまだ緑色のブロックでなければなりません。

これは、メディアクエリがまだ適用されていることを意味します。しかし、デバッガを開くと、CSSが正常に機能していることがわかります。これはChromeのバグですか?

http://imgur.com/a/TIAAi

ここでシーケンスを示しimgurのアルバムです。

  1. 開かれた、最大化された。
  2. 縮小されたビューポート、メディアクエリが有効になりました。
  3. メディアクエリを使用して最大化しました。
  4. CSSを見ると、寸法は300x200ですが、UIは100x100と表示されます。何かが壊れています。
+0

私は、これは通常とChromeがページをレンダリングする方法に関連していると言うでしょう。そのページを非アクティブにしてブラウザのサイズを変更したため、ページを再レンダリングしません。インスペクタを開くと、インスペクタが正しいフィードバックを表示します。レンダリングが変更されていないことだけです。私はこれが通常のユースケースではなく、それを心配しないと言います。 – aaronburrows

+0

はい、通常の使用例ではありません。定期的なサイト訪問者がこれを遭遇する可能性は非常に低いです。 –

+0

私は反応的に構築されているアプリケーションを持っています。それはクライアントのためのタブとして一日中生きるでしょう。このバグはすぐに明らかです。 – Rick

答えて

8

この問題の修正は、Chromeでページのレンダリングを更新するように設定することです。 bodyタグのクラスのサイズ変更、最大化、または変更を行うことでそれを行うことができます。私はcodepenを更新して、タブ切り替え時に発生するvisibilitychangeイベントを使用して、本体のクラスを切り替えてChromeにページレンダリングを強制的に更新させるようにしました。

http://codepen.io/anon/pen/nuxaw

+0

私の場合は動作しませんでした:(クラスは変わりますが、メディアクエリは適用されません。実際にはブラウザのサイズ変更でさえ効果がありません。 – Andrey

関連する問題