1

Scroll auto sur iPhone, iPod et iPad

6 avril 2010
par ARNO*

Avertissement : cette astuce n’est pas réservée à SPIP. Elle concerne n’importe quelle page HTML destinée à l’affichage sur iPhone ou iPad. (Mais personnellement, je développe jamais que du HTML avec SPIP...)

Sur Safari versions iPhone, iPad et iPad, il est très difficile d’utiliser le scroll automatique pour des éléments de hauteur fixée dotée du style :

Le comportement existe, mais est généralement inconnu des usagers : le scroll s’obtient en caressant l’engin avec deux doigts. Le scroll avec un doigt est réservé au scroll général de la page.

Si votre page est conçue comme une « application Web », ce comportement est très pénible. Je n’ai pas trouvé de solution satisfaisante pour rétablir le comportement « habituel » sur ces machines, aussi j’ai développé un petit javascript (utilisant jQuery).

Je vous le livre donc ci-dessous, tel quel.

Outre le retour du scroll à un doigt sur les éléments à overflow, le script simule l’apparition et la disparition d’une scrollbar à la façon de Safari.

Pour l’utiliser, il faut ajouter la classe scroll_auto aux éléments concernés (les éléments qui sont conçus pour la classe overflow). Par exemple :

Pour être cohérent, il faut évidemment que le cadre doté du scroll_auto soit de hauteur fixe et doté d’un overflow, par exemple :

Il suffit ensuite d’appeler le fichier Javascript dans votre header, il déclenchera tout seul tout le comportement nécessaire.

Notez bien : si vous testez votre page Safari sous Mac (ou sous Windows) en modifiant son indication d’agent utilisateur, le comportement ne fonctionnera pas : les événements touchstart, touchmove et touchend ne sont intégrés qu’aux versions iPhone, iPod et iPad.

Version 0.2.

  • Amélioration du rendu visuel de la scrollbar.
  • Effet de transition du scroll : à la fin du scroll, si on a effectué un mouvement vertical rapide (« swipe »), le scroll continue un peu plus loin.

Version 0.3 Les clicks (pas de scroll) à l’intérieur du scroll provoquaient un décalage après un premier scroll (à noter : dans un simple « click », il n’y a semble-t-il pas de ontouchmove du tout).

Version 0.4 Optimiser le code, augmenter la vitesse d’exécution.

Qui êtes-vous ?
Votre message

Ce formulaire accepte les raccourcis SPIP [->url] {{gras}} {italique} <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.