ホームページ >ウェブフロントエンド >CSSチュートリアル >モバイル Chrome で全画面の背景画像がジャンプするのはなぜですか?どうすれば修正できますか?

モバイル Chrome で全画面の背景画像がジャンプするのはなぜですか?どうすれば修正できますか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-06 00:03:13698ブラウズ

Why Does My Full-Screen Background Image Jump in Mobile Chrome and How Can I Fix It?

モバイル Chrome の背景画像オフセットの問題

レスポンシブ Web デザインでは、サイズ変更やスムーズな遷移が可能な全画面背景画像を使用するのが一般的です。ただし、開発者は、iOS Safari、Android ブラウザ、または Android の Chrome で下にスクロールするとアドレス バーが非表示になると、背景が突然飛ぶという問題によく遭遇します。

問題の原因

この問題は、背景サイズの値が「cover」で固定高の背景 div を使用するときに発生します。アドレス バーが縮小すると、背景 div の高さが変化し、利用可能な領域をカバーするように画像のサイズと位置が再調整されます。

解決策 1: #bg1 と #bg2 の高さを 100vh に設定する

背景の div 高さを 100vh (ビューポートの高さ) に設定しようとすると、次のようになります。エレガントなソリューションですが、iOS にはこのアプローチが確実に動作することを妨げる vh バグがあります。

解決策 2: Javascript を使用して静的高さを設定する

ビューポート サイズは次のように決定されるため、 Javascript は URL バーの影響を受けません。JavaScript を使用して、ビューポート サイズに基づいて背景 div の静的な高さを設定できます。これは理想的な解決策ではありませんが、背景画像のサイズ変更を効果的に防ぐことができます。

var bg = $("#bg1, #bg2");

function resizeBackground() {
    bg.height($(window).height());
}

$(window).resize(resizeBackground);
resizeBackground();

追加メモ

この問題は次の原因で発生することに注意することが重要です。 iOS および Android プラットフォームのアドレス バーのサイズ変更。これらのブラウザの最新の変更により、スクロール トリックを使用してページの読み込み時に URL バーが非表示になることが防止されます。

スクロール ギャップの解決

上記のスクリプトは、背景の表示を効果的に防止します。サイズ変更は可能ですが、ユーザーが下にスクロールすると顕著な隙間が生じる可能性があります。これに対処するには、背景の高さに 60 ピクセルを追加します:

function resizeBackground() {
    bg.height( $(window).height() + 60);
}

この変更によりギャップは防止されますが、URL バーが存在する場合、背景画像の下 60 ピクセルが非表示になる可能性があります。

以上がモバイル Chrome で全画面の背景画像がジャンプするのはなぜですか?どうすれば修正できますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。