3

ページの下部に固定ナビゲーション バーがありますが、ほとんどの公園ではモバイル サファリで問題なく動作します。ただし、テキスト入力フィールドを追加しました。テキスト入力にフォーカスすると、キーボードが表示され、何らかの理由で固定ナビゲーションがページ上でキーボードの上に移動します。 、それとキーボードの間に約 60px の空白を追加します。さらに、入力フィールドがフォーカスされなくなり、キーボードが消えるまで、要素を相対位置に設定します。

明確にするために、私が解決しようとしている問題は、キーボードの上部に触れて、視野の下部に留まりながら固定ナビゲーションが上に移動することではありません。むしろ、キーボードの上にさらに 50 ピクセルまたは 60 ピクセル移動して、キーボードとキーボードの間に余白が表示され、ページが壊れているように見えます。

長期的に解決しようとしている問題のスクリーンショット。

この質問は、おそらく機能しているソリューションと同様の問題であるように思われるため、jqueryで先に進みました。

ここでの目標は、スクロール機能を無効にし、固定ナビゲーションが押し上げられるのではなく、ページの下部に触れたままにすることで、仮想キーボードが表示されたときに固定ナビゲーションがページの中央まで押し上げられないようにすることです。これは、ユーザーがテキスト入力に集中しているときに、本文のオーバーフローを非表示に変更することによって行われます。

だからここにプログラミングの問題があります:私が書いたjquery(入力フィールドがフォーカスされている間にボディをoverflow:hiddenに設定してスクロールを無効にする)は、Firefoxでは完全に動作しますが、モバイルサファリでは何もしません:

$(document).ready(function(){
$(".mobile_text_focus_fix").focus(function(){
$("body").css("overflow","hidden");});  
$(".mobile_text_focus_fix").blur(function(){
$("body").css("overflow","visible");});
});

上記の jquery は、次の html を使用します。

<input type="text" class="mobile_text_focus_fix"></input>

Firefox のスクリーンショット:

ここに画像の説明を入力

前述したように、Firefox で動作しています。上記は私がやろうとしていることの動作例ですが、モバイル サファリでは、上記の jquery はどれも動作していないようです。

これがモバイル サファリでは機能しないのに、Firefox では機能する理由について何か考えはありますか?

4

1 に答える 1

0

定義済みのビューポート幅を持つメタ ビューポート タグを追加する必要があります。

<meta name='viewport' content='width=device-width'>

それはスクロール可能性を妨げるべきではありませんが、問題を解決します...

アップデート

それ以外の場合は、デフォルトのタッチ動作を防止してください...

于 2013-03-05T19:41:35.330 に答える