Maison >interface Web >tutoriel CSS >Pourquoi window.innerHeight est-il différent de window.outerHeight dans le mode paysage Safari d'iOS 7 ?

Pourquoi window.innerHeight est-il différent de window.outerHeight dans le mode paysage Safari d'iOS 7 ?

DDD
DDDoriginal
2024-10-25 22:45:29845parcourir

Why is window.innerHeight Different from window.outerHeight in iOS 7 Safari Landscape Mode?

Bogue de mise en page du paysage Safari sur iPad iOS 7 : disparité InnerHeight/OuterHeight

Dans iOS 7 Safari, les applications Web avec une hauteur de corps de 100 % rencontrez un problème particulier en mode paysage. Le window.innerHeight (672px) diffère du window.outerHeight (692px).

Cette différence entraîne un espace supplémentaire de 20px sous la zone visible, ce qui entraîne le masquage des éléments de navigation derrière le chrome du navigateur lors du balayage vers le haut. . Les éléments positionnés de manière absolue en bas de l'écran apparaissent également à 20 px.

Solution de contournement

Pour atténuer ce bug, vous pouvez appliquer un hack CSS qui définit explicitement la hauteur du corps. à 672px et le positionne absolument uniquement dans iOS 7 :

<code class="css">@media (orientation:landscape) {
    html.ipad.ios7 > body {
        position: absolute;
        bottom: 0;
        width: 100%;
        height: 672px !important;
    }
}</code>

Pour identifier les appareils iPad exécutant iOS 7, utilisez le script suivant :

<code class="javascript">if (navigator.userAgent.match(/iPad;.*CPU.*OS 7_\d/i)) {
    $('html').addClass('ipad ios7');
}</code>

En appliquant cette solution de contournement, la hauteur externe sera être obligé de correspondre à la innerHeight, garantissant ainsi que la mise en page de votre application se comporte comme prévu dans le mode paysage iOS 7 Safari.

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!

Déclaration:
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