Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

135
Vistas
¿Hay alguna manera de terminar por la fuerza el desplazamiento táctil en Vanilla JS?

Tengo una página de mosaicos de imágenes que cambia a un visor de imágenes cuando se hace clic en un mosaico. Cuando el teatro está cerrado, se desplaza automáticamente hacia abajo hasta el mosaico de la última imagen vue. Una de las opciones para cerrar el teatro es deslizar hacia abajo en el móvil. Sin embargo, si el usuario sigue moviendo el dedo por la pantalla después de deslizar hacia abajo, el navegador evita que el script se desplace por la página.

¿Hay alguna manera de cancelar por la fuerza el toque del usuario o permitir que .scrollIntoView anule el desplazamiento del usuario?

Aquí hay un ejemplo rápido que armé. El script intenta desplazar suavemente la página hasta el último mosaico cada 2 segundos, pero si el usuario se desplaza durante la animación, se cancela.

 setInterval(() => {

 document.getElementById("target").scrollIntoView({
 behavior: "smooth",
 inline: "center"
 });
 document.getElementById("indicator").innerHTML = "Scrolling..."
 setTimeout(() => {
 document.getElementById("indicator").innerHTML = ""
 }, 500);

}, 2000);
 #container {
 display: block;
 position: relative;
 width: 100%;
 max-width: 500px;
 display: inline-grid;
 grid-template-columns: repeat(auto-fit, 150px);
 justify-content: space-evenly;
}

.tile {
 background-image: url(https://via.placeholder.com/150);
 width: 150px;
 height: 150px;
 margin-top: 10px;
}

#indicator {
 width: 100%;
 max-width: 500px;
 display: block;
 position: fixed;
 top: 5px;
 text-align: center;
 font-family: monospace;
}
 <div id="container">

 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile"></div>
 <div class="tile" id="target"></div>

 <div id="indicator"></div>

</div>

almost 4 years ago · Santiago Trujillo
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda