Utiliser un div à défilement
.scrollable-div{
overflow-x: scroll;
overflow-y: hidden;
white-space: nowrap;
}
DEMO sur les appareils Android, le défilement au fur et à mesure est lisse et comporte même des accélérations et des décélérations.
Le même code sur un iPhone, le défilement est raide. Lorsque l'utilisateur relâche le contact, le défilement s'arrête immédiatement.
Comment faites-vous pour que l'iPhone traite la div à défilement comme un navigateur Android avec un défilement en douceur du style natif d'accélération/décélération?
Vous pouvez obtenir un défilement de type natif sur un élément HTML avec overflow
en utilisant la propriété CSS propriétaire suivante:
-webkit-overflow-scrolling: touch;
Il a cependant quelques réserves. Selon le contenu de l'élément, le rendu peut être légèrement interrompu. Vous devez donc le tester et voir s'il convient à vos besoins. Je ne sais pas non plus si cela fonctionne correctement lorsque vous spécifiez overflow-y: hidden
. Si ce n'est pas le cas, vous devriez pouvoir le faire fonctionner en jouant avec différentes valeurs pour overflow-x
, overflow-y
et overflow
(auto
ne semble pas fonctionner).
Si vous en avez besoin, vous pouvez simuler overflow-y: hidden
sur votre div
en créant une seconde div
imbriquée avec le contenu et en définissant cette propriété. Mais j'espère que ce n'est pas nécessaire.
La suggestion de Marco Aurélio est en fait la meilleure solution. Cela fonctionne mieux si vous définissez overflow-y: scroll
ET en ajoutant -webkit-overflow-scrolling: touch
à l'élément également. Vous aurez un sentiment de défilement semblable à celui d'un natif
Ok, c'est ce qui fonctionne pour mon:
body, html {
overflow-x:hidden;
-webkit-overflow-scrolling: touch;
}