158 votes

Comment désactiver le défilement sur mobile Safari ?

J'ai une longue page et je veux cacher le contenu qui se trouve en dessous du "pli", et cela devrait fonctionner sur iPhone/iPad.

overflow:hidden appliqué à ne semble pas fonctionner sur mobile Safari. Je ne peux pas créer un conteneur sur l'ensemble du site web pour y parvenir...

Connaissez-vous la solution ?

2 votes

Désespérément à la recherche de trouver la réponse à cela moi-même.

141voto

Alex Haas Points 308

J'ai eu un problème similaire et j'ai trouvé que l'application overflow: hidden; à la fois à html et à body a résolu mon problème.

html,
body {
    overflow: hidden;
} 

Pour iOS 9, vous devrez peut-être utiliser ceci à la place : (Merci chaenu!)

html,
body {
    overflow: hidden;
    position: relative;
    height: 100%;
}

17 votes

Cela ne fonctionne pas sur iOS Safari. La position : relative est également nécessaire.

5 votes

Oui, ajoutez à la fois relative et overflow à html + body

3 votes

Cela ne fonctionne pas sur iOS 9, même en utilisant la position relative sur le body et html

98voto

laFunk Points 201
corps {
  position:relative; // c'est tout
  overflow:hidden;
}

4 votes

MERCI. VOUS. J'ai eu un gros problème lorsque les éléments en transition provenaient de l'extérieur du viewport pour se retrouver à l'intérieur. Il se produisait un bogue étrange où le contenu devenait étendu. C'était la solution pour moi!

57 votes

Dans mon cas, ajouter "position: relative" n'a pas aidé mais ajouter "position: fixed" a fonctionné.

1 votes

Oui, ça a fonctionné. Je suis en train de construire un site où ils veulent que la navigation mobile passe au-dessus du contenu - mais quand elle est ouverte, le contenu derrière la navigation à l'arrière-plan continue de défiler. Les autres réponses avec position, overflow & hauteur ont également fonctionné, mais avec la hauteur, la page saute vers le haut lorsque j'ouvre la navigation. Je suppose que c'est unique à ma situation mais je voulais juste le mentionner au cas où quelqu'un d'autre ayant une navigation superposée rencontrerait le même problème.

0voto

Greg-J Points 1147

Pourquoi ne pas envelopper le contenu que vous ne voulez 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 mobiles ?

0voto

Lee McAlilly Points 3533

Oui, cela est lié aux nouvelles mises à jour dans Safari qui cassent actuellement votre mise en page si vous utilisez overflow: hidden pour gérer le nettoyage des divs.

10 votes

Pouvez-vous fournir plus de détails à ce sujet, ou citer une source ? Cette réponse pourrait être correcte, mais elle n'est pas très utile.

0voto

adam Points 199

Il s'applique, mais uniquement à certains éléments dans le DOM. Par exemple, cela ne fonctionnera pas sur un tableau (table), une cellule de tableau (td) ou certains autres éléments, mais cela fonctionnera sur une balise <DIV>.
Par exemple:

Uniquement testé sur iOS 4.3.

Une légère modification : il serait peut-être préférable d'utiliser overflow:scroll afin que le défilement à deux doigts fonctionne.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X