Dans Chrome pour Mac, on peut «faire défiler» une page (faute d'un meilleur mot), comme le montre la capture d'écran ci-dessous, pour voir «ce qu'il y a derrière», similaire à l'iPad ou à l'iPhone.
J'ai remarqué que certaines pages l'ont désactivé, comme gmail et la page "nouvel onglet".
Comment puis-je désactiver le «défilement excessif»? Existe-t-il d’autres moyens de contrôler le «défilement excessif»?
html
css
macos
google-chrome
Randomblue
la source
la source
Réponses:
La solution acceptée ne fonctionnait pas pour moi. La seule façon dont je l'ai fait fonctionner tout en étant capable de faire défiler est:
la source
html
hack de style et pour les navigateurs Web mobiles qui regardent le débordement complet debody
ne pas tenir compte de la hauteur à laquelle ahtml
été définie.$(window).scrollTop
?window.scrollY
est toujours0
.Dans Chrome 63+, Firefox 59+ et Opera 50+, vous pouvez le faire en CSS:
Cela désactive l'effet de bande élastique sur iOS montré dans la capture d'écran de la question. Cependant, il désactive également le pull-to-refresh, les effets d'éclat et le chaînage de défilement.
Vous pouvez cependant choisir d'implémenter votre propre effet ou fonctionnalité lors du défilement excessif. Si vous souhaitez par exemple flouter la page et ajouter une animation soignée:
Prise en charge du navigateur
Au moment d'écrire ces lignes, Chrome 63+, Firefox 59+ et Opera 50+ le prennent en charge. Edge l'a pris en charge publiquement alors que Safari est un inconnu. Suivez les progrès ici et la compatibilité actuelle du navigateur dans la documentation MDN
Plus d'information
overscroll-behavior
Spécification CSSla source
Une façon d'éviter cela consiste à utiliser le CSS suivant:
De cette façon, le corps n'a jamais de débordement et ne «rebondira» pas lors du défilement en haut et en bas de la page. Le conteneur fera parfaitement défiler son contenu à l'intérieur. Cela fonctionne dans Safari et dans Chrome.
Éditer
Pourquoi cet
<div>
élément supplémentaire comme wrapper pourrait être utile:la solution de Florian Feldhaus utilise un peu moins de code et fonctionne bien aussi. Cependant, cela peut avoir une petite bizarrerie, quand il s'agit de contenu qui dépasse la largeur de la fenêtre. Dans ce cas, la barre de défilement en bas de la fenêtre est déplacée hors de la fenêtre à mi-chemin et est difficile à reconnaître / atteindre. Cela peut être évité
body { margin: 0; }
si cela est approprié. Dans le cas où vous ne pouvez pas ajouter ce CSS, l'élément wrapper est utile car la barre de défilement est toujours entièrement visible.Trouvez une capture d'écran ci-dessous:
la source
Vous pouvez utiliser ce code pour supprimer une
touchmove
action prédéfinie:la source
la source
position: fixed
est le sauveur!Essayez de cette façon
la source
position: absolute
travaille pour moi. J'ai testé surChrome 50.0.2661.75 (64-bit)
et OSX.la source
L'effet de rebond ne peut pas être désactivé sauf que la hauteur de la page Web est égale à
window.innerHeight
, vous pouvez laisser vos sous-éléments défiler.la source