J'ai remarqué un étrange bug dans iOS 10 avec le CSS scroll-snap propriétés.
Voici mon css :
#springBoard{
height: 100%;
width: 100%;
font-size: 0px;
white-space: nowrap;
overflow: scroll;
-webkit-overflow-scrolling: touch;
-webkit-scroll-snap-type: mandatory;
-webkit-scroll-snap-points-x: repeat(100%);
}
section{
display: inline-block;
width: 100%;
height: 100%;
vertical-align: top;
font-size: 16px;
}
Si je fais défiler par programmation jusqu'à un point d'accrochage et que je modifie ensuite le contenu du conteneur scroll-snap, le nav revient au premier point d'accrochage.
// Programatically scroll the scroll-snap container
$("#springBoard")[0].scrollLeft = 320
Il ne semble pas être lié à la façon dont je déclenche le défilement. Toutes ces méthodes de défilement produisent le même résultat :
$("#springBoard")[0].scrollLeft = 320
$("#springBoard").animate({scrollLeft: 320}, 1)
$("#springBoard > section:eq(1)")[0].scrollIntoView()
window.location.hash = "sectionId"
- Le bug ne se produit pas lors du défilement manuel (voir le commentaire de @maxime ci-dessous).
- Il est présent depuis la version 10.3.2 d'iOS.
- Je ne sais pas si c'est corrigé dans iOS 11.
J'ai passé quelques jours à essayer de résoudre ce problème, mais sans succès jusqu'à présent.
Voici un exemple simplifié de mon système de navigation :
Quelqu'un connaît-il un moyen de contourner ce problème ? stupide Un bug ?
2 votes
Si je navigue et que je clique sur l'icône
Change Content
il reste au même point d'accrochage. Ce n'est que si je clique sur le bouton sans avoir effectué de défilement que le bug survient.0 votes
Avez-vous essayé de faire défiler la page de manière programmatique ?
window.scrollTo(0, 0); //or some variant
0 votes
Merci pour la suggestion, j'ai essayé de faire défiler la fenêtre mais cela ne résout pas le problème.
0 votes
bugzilla.mozilla.org/show_bug.cgi?id=1331632 <-- Je pense que c'est vrai
1 votes
Cette fonctionnalité est encore très expérimentale. Dans Safari sur Mac OSX, la page continue de défiler lorsque vous faites défiler la page en la fixant verticalement dans une boîte de débordement. webkit.org/demos/scroll-snap Chrome ne le prend même pas encore en charge. Il vaut mieux utiliser JS pour cela pour le moment.