Est-ce que overflow:hidden
appliqué pour <body>
fonctionner sur iPhone Safari? Il semble que non. Je ne peux pas créer un wrapper sur l'ensemble du site Web pour y parvenir ...
Connaissez-vous la solution?
Exemple: j'ai une longue page, et je veux simplement cacher le contenu qui passe sous le "pli", et cela devrait fonctionner sur iPhone / iPad.
Réponses:
J'ai eu un problème similaire et j'ai trouvé que s'appliquer
overflow: hidden;
aux deuxhtml
et abody
résolu mon problème.Pour iOS 9, vous devrez peut-être utiliser ceci à la place: (Merci chaenu!)
la source
position: relative
.la source
Certaines solutions énumérées ici présentaient d'étranges problèmes lors de l'étirement du défilement élastique. Pour résoudre ce problème, j'ai utilisé:
Source: http://www.teamtownend.com/2013/07/ios-prevent-scrolling-on-body/
la source
position: relative
) cependant, la position de défilement est perdue après la restauration du style par défaut (par exemple la fermeture du menu).// on menu open // save window pos $('body').attr( 'data-pos', $(window).scrollTop() ) ; // ... // on menu close // scroll to saved window pos $( window ).scrollTop( $('body').attr( 'data-pos' ) );
Eu ce problème aujourd'hui sur iOS 8 et 9 et il semble que nous devons maintenant ajouter de la hauteur: 100%;
Alors ajoutez
la source
Combinant les réponses et les commentaires ici et cette question similaire ici fonctionné pour moi.
Donc poster une réponse globale.
Voici comment vous devez placer un div wrapper autour du contenu de votre site, juste à l'intérieur de la
<body>
balise.Créez la classe wrapper comme ci-dessous.
J'ai aussi eu l'idée de cette réponse ici .
Et cette réponse ici a aussi matière à réflexion. Quelque chose qui fonctionnera probablement aussi bien sur les ordinateurs de bureau que sur les appareils.
la source
Il fonctionne dans le navigateur Safari.
la source
Pour moi ceci:
Cela ne suffisait pas, je n'ai pas fonctionné sur iOS sur Safari. J'ai également dû ajouter:
Pour que ça marche bien. Fonctionne bien maintenant :)
la source
J'ai travaillé avec
<body>
et<div class="wrapper">
Lorsque la fenêtre contextuelle s'ouvre ...
<body>
obtient une hauteur de 100% et un débordement: caché<div class="wrapper">
obtient la position: relative; débordement: caché; hauteur: 100%;J'utilise JS / jQuery pour obtenir la position de défilement réelle de la page et stocker la valeur sous forme d'attribut de données au corps
Ensuite, je fais défiler jusqu'à la position de défilement dans le .wrapper DIV (pas dans la fenêtre)
Voici ma solution:
JS / jQuery:
CSS:
Cela fonctionne bien des deux côtés ... bureau et mobile (iOS).
Les conseils et améliorations sont les bienvenus :)
À votre santé!
la source
ajoutez ceci par défaut à votre css
toggleClasse cette classe en pour couper la page
lorsque vous désactivez cette classe, la première ligne rappelle la barre de défilement
la source
Oui, cela est lié aux nouvelles mises à jour de safari qui cassent votre mise en page maintenant si vous utilisez overflow: hidden pour s'occuper de la suppression des divs.
la source
Cela s'applique, mais cela ne s'applique qu'à certains éléments du DOM. par exemple, cela ne fonctionnera pas sur une table, td ou certains autres éléments, mais cela fonctionnera sur une balise <DIV>.
par exemple:
Uniquement testé sous iOS 4.3.
Une modification mineure: vous feriez peut-être mieux d'utiliser le débordement: faites défiler pour que le défilement à deux doigts fonctionne.
la source
Pourquoi ne pas envelopper le contenu que vous ne souhaitez pas afficher dans un élément avec une classe et définir cette classe
display:none
dans une feuille de style destinée uniquement à l'iPhone et aux autres appareils portables?la source
Voici ce que j'ai fait: je vérifie la position y du corps, puis je fixe le corps et j'ajuste le haut au négatif de cette position. À l'inverse, je rends le corps statique et je règle le défilement sur la valeur que j'ai enregistrée auparavant.
la source
Changez simplement la hauteur du corps <300px (la hauteur de la fenêtre mobile sur l'espace terrestre est d'environ 300px à 500px)
JS
CSS
la source