Estoy trabajando en una aplicación basada en navegador, actualmente estoy desarrollando y diseñando para el navegador ipad safari.
Estoy buscando dos cosas en el ipad: ¿Cómo puedo desactivar el desplazamiento vertical para páginas que no lo requieren? ¿Y cómo puedo desactivar el efecto de rebote elástico?
ipad
scroll
mobile-safari
bounce
Adán
fuente
fuente
Respuestas:
Esta respuesta ya no es aplicable, a menos que esté desarrollando para un dispositivo iOS muy antiguo ... Consulte otras soluciones
Respuesta de 2011: para una aplicación web / html que se ejecute dentro de iOS Safari, desea algo como
Para iOS 5, puede tener en cuenta lo siguiente: document.ontouchmove y desplazamiento en iOS 5
Actualización de septiembre de 2014: se puede encontrar un enfoque más completo aquí: https://github.com/luster-io/prevent-overscroll . Para eso y muchos consejos útiles sobre aplicaciones web, consulte
http://www.luster.io/blog/9-29-14-mobile-web-checklist.htmlActualización de marzo de 2016: ese último enlace ya no está activo: consulte https://web.archive.org/web/20151103001838/http://www.luster.io/blog/9-29-14-mobile-web-checklist .html para la versión archivada en su lugar. Gracias @falsarella por señalar eso.
fuente
onTouchMove: function(e) { e.stopPropagation(); e.stopImmediatePropagation(); }
Evitará que el evento golpee el cuerpo, pero el cuerpo permanecerá sin rebote. Editar: Esto supone que establezca $ ('div'). On ('touchmove', ... onTouchMove);También puede cambiar la posición del cuerpo / html a fija:
fuente
Para evitar el desplazamiento en los navegadores móviles modernos, debe agregar el pasivo: falso. Había estado arrancándome el pelo para que esto funcionara hasta que encontré esta solución. Solo he encontrado esto mencionado en otro lugar en Internet.
fuente
{ passive: false }
definitivamente no funciona! Bienvenido en StackOverflow dudeoverflow-y: scroll
? Por ejemplo, tener un modal con una altura de vista más alta que el cuerpo.Puede usar este fragmento de código jQuery para hacer esto:
Esto bloqueará el desplazamiento vertical y también cualquier efecto de rebote que ocurra en sus páginas.
fuente
En el contenedor puede establecer el efecto de rebote dentro del elemento
Fuente: http://www.kylejlarson.com/blog/2011/fixed-elements-and-scrolling-divs-in-ios-5/
fuente
overflow:hidden
el<body>
, esta sigue siendo la mejor solución. Sin embargo, al abrir el teclado o deslizarse por la parte inferior de la pantalla, ya no funcionará.Sé que esto está un poco fuera de pista, pero he estado usando Swiffy para convertir Flash en un juego HTML5 interactivo y me encontré con el mismo problema de desplazamiento, pero no encontré soluciones que funcionaran.
El problema que tuve fue que la etapa Swiffy ocupaba toda la pantalla, por lo que tan pronto como se cargó, el evento de movimiento táctil del documento nunca se activó.
Si intenté agregar el mismo evento al contenedor Swiffy, se reemplazó tan pronto como se cargó el escenario.
Al final lo resolví (bastante desordenado) aplicando el evento touchmove a cada DIV dentro del escenario. Como estos divs también cambiaban constantemente, necesitaba seguir revisándolos.
Esta fue mi solución, que parece funcionar bien. Espero que sea útil para cualquier otra persona que intente encontrar la misma solución que yo.
fuente
Código para eliminar ipad safari: deshabilite el desplazamiento y el efecto de rebote
Si tiene una etiqueta de lienzo dentro del documento, en algún momento afectará la usabilidad del objeto dentro del lienzo (ejemplo: movimiento del objeto); así que agregue el siguiente código para solucionarlo.
fuente
Prueba esta solución JS :
Evita el desplazamiento predeterminado de Safari y los gestos de rebote sin desconectar a los oyentes de eventos táctiles.
fuente
Ninguna de las soluciones funciona para mí. Así es como lo hago.
fuente
Probado en iphone. Simplemente use este CSS en el contenedor del elemento de destino y cambiará el comportamiento de desplazamiento, que se detiene cuando el dedo sale de la pantalla.
https://developer.mozilla.org/en-US/docs/Web/CSS/-webkit-overflow-scrolling
fuente
Para aquellos que usan MyScript, la aplicación web y están luchando con el desplazamiento / arrastre del cuerpo (en iPad y tabletas) en lugar de escribir:
<body touch-action="none" unresolved>
Eso me lo arregló.
fuente
Puede usar js para evitar el desplazamiento:
Y que simplemente ejecutar / detener funciones
toggleScroll
cuando abres / cierras modal.Me gusta esto
toggleScroll(true) / toggleScroll(false)
(Esto es solo para iOS, en Android no funciona)
fuente
Pruebe esta solución JS que alterna el
webkitOverflowScrolling
estilo. El truco aquí es que este estilo está desactivado, el Safari móvil pasa al desplazamiento normal y evita el rebote excesivo, por desgracia, no puede cancelar el arrastre continuo. Esta solución compleja también realiza un seguimiento,onscroll
ya que el rebote en la parte superior hacescrollTop
que se pueda realizar un seguimiento negativo. Esta solución se probó en iOS 12.1.1 y tiene un inconveniente único: mientras se acelera el rebote único de desplazamiento, ya que restablecer el estilo puede no cancelarlo de inmediato.fuente
respuesta mejorada @Ben Bos y comentada por @Tim
Este CSS ayudará a evitar problemas de desplazamiento y rendimiento con el renderizado CSS porque la posición cambió / poco retraso sin ancho y altura
fuente
Para aquellos de ustedes que no desean deshacerse del rebote pero solo para saber cuándo se detiene (por ejemplo, para comenzar un cálculo de las distancias de la pantalla), pueden hacer lo siguiente (contenedor es el elemento contenedor que se desborda):
fuente
Deshabilitar el efecto de desplazamiento de rebote de safari:
fuente
Al igual que el kiwi enojado, lo hice funcionar usando la altura en lugar de la posición:
fuente
Solución probada, funciona en iOS 12.x
Este es el problema que estaba encontrando:
Mientras desplazo mi galería, el cuerpo siempre se desplaza a sí mismo (el deslizamiento humano no es realmente horizontal), lo que hace que mi galería sea inútil.
Esto es lo que hice mientras mi galería comienza a desplazarse
Y cuando mi galería termina de desplazarse ...
Espero que esto ayude ~
fuente