Maison > interface Web > tutoriel CSS > Pourquoi mon image d'arrière-plan en plein écran saute-t-elle sur Mobile Chrome lorsque la barre d'adresse se cache ?

Pourquoi mon image d'arrière-plan en plein écran saute-t-elle sur Mobile Chrome lorsque la barre d'adresse se cache ?

Patricia Arquette
Libérer: 2024-12-17 06:06:25
original
873 Les gens l'ont consulté

Why Does My Full-Screen Background Image Jump on Mobile Chrome When the Address Bar Hides?

Décalage de l'image d'arrière-plan sur la barre d'adresse Masquer dans iOS/Android/Mobile Chrome

Problème

Lors du développement d'un site Web réactif à l'aide de CSS, y compris un -image d'arrière-plan de l'écran qui pivote et s'estompe entre deux divs, un comportement inattendu se produit : l'image d'arrière-plan saute légèrement lors du défilement vers le bas sur iOS Safari, le navigateur Android ou Android Chromé. Ceci est dû au fait que la barre d'adresse se cache et ajuste par conséquent la taille des div d'arrière-plan, qui sont fixes et réglés à 100 % de hauteur.

Solution

Pour résoudre ce problème, deux solutions possibles existent :

  1. Réglez la hauteur #bg1 et #bg2 sur 100vh : Cette solution est théoriquement élégant, en utilisant la hauteur de la fenêtre pour définir la hauteur appropriée. Cependant, iOS a un bug vh qui affecte cette solution.
  2. Utilisez JavaScript pour définir une hauteur statique : La taille de la fenêtre d'affichage, lorsqu'elle est déterminée par JavaScript, n'est pas affectée par la barre d'adresse. Ainsi, JavaScript peut définir une hauteur statique pour les divs d'arrière-plan en fonction de la taille de la fenêtre d'affichage. Ce n'est pas une solution idéale en raison de sa nature CSS non pure et d'un léger saut d'image lors du chargement de la page, mais elle est viable compte tenu des bugs vh d'iOS.

L'utilisation du code JavaScript suivant ajustera l'arrière-plan hauteur dynamiquement :

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

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

$(window).resize(resizeBackground);
resizeBackground();
Copier après la connexion

Considérations supplémentaires

Bien que la solution ci-dessus empêche efficacement le redimensionnement de l'arrière-plan, elle peut provoquer un écart notable lorsque les utilisateurs font défiler vers le bas. Cet écart résulte de la correspondance de la hauteur de l'arrière-plan avec celle de l'écran moins la hauteur de la barre d'URL. En ajoutant 60 px à la hauteur, ce problème peut être résolu, mais cela signifie que les 60 px inférieurs de l'image d'arrière-plan ne seront pas visibles lorsque la barre d'URL est présente :

function resizeBackground() {
    bg.height( $(window).height() + 60);
}
Copier après la connexion

Il est à noter que ces redimensionnements Les barres d'URL sur iOS et Android ont suscité des inquiétudes en raison de leur impact sur les fonctionnalités des sites Web. Bien que leur objectif soit compris, leur comportement peut entraîner des défis inattendus dans les conceptions basées sur CSS.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal