Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

194
Visualizações
Divs de posición aleatoria que aparecen y desaparecen gradualmente

He estado buscando y tratando de resolver este problema por un tiempo y no tengo ni idea.

Aquí está mi función de reacción tal como está.

El código en negrita es la función en cuestión, en este momento cómo funciona, es que la función itera a través de la matriz de videos, luego coloca esos elementos al azar, en diferentes momentos debido a setInterval.

 export default function RandomVideos(){ useEffect(() => { const videos = Array.from(document.getElementsByClassName('video_container') as HTMLCollectionOf<HTMLElement>); const Width = (document.getElementById('container') as HTMLElement).offsetWidth; const Height = (document.getElementById('container') as HTMLElement).offsetHeight; function fadeIn(thisVideo: HTMLElement){ thisVideo.classList.add('fade-in'); thisVideo.classList.remove('fade-out'); } function fadeOut(thisVideo: HTMLElement){ thisVideo.classList.add('fade-out'); thisVideo.classList.remove('fade-in'); } function randomlyPlaced(){ videos.forEach(thisVideo => { setInterval(function() { thisVideo.classList.add("fade-in"); const randomTop = Math.round(Math.random() * Height) - 20; const randomLeft = Math.round(Math.random() * Width) - 20; thisVideo.style.top = randomTop +"px"; thisVideo.style.left = randomLeft +"px"; fadeIn(thisVideo) }, (Math.floor(Math.random() * 7000) + 2000)) }) } randomlyPlaced() }); return( <div className="container" id="container"> {RandomVideosProps.map((video) => ( <div className="video_container" key={video.id}> <video src={video.src}></video> {video.text} </div> ))} </div> );}

El código funciona como se esperaba, las primeras iteraciones de los elementos del video se desvanecen, luego cada intervalo se posiciona al azar. Pero quiero que los elementos se desvanezcan en cada intervalo y luego vuelvan a aparecer. No tengo idea de cómo hacer esto ya que el intervalo está dentro del método forEach.

Tener el intervalo fuera del método forEach significa que los elementos de la matriz se colocarán al azar todos juntos, a la vez. Que es lo que estoy tratando de evitar.

Entonces, cómo quiero que funcione este código: cada elemento de la matriz se desvanece, en una posición aleatoria, luego se desvanece y se desvanece nuevamente en otra posición aleatoria.

Me encantaría cualquier sugerencia o ayuda, estoy tratando de evitar usar jQuery también porque sé que normalmente no se usa en reaccionar.

No he intentado usar ninguna biblioteca.

Estoy escribiendo en un archivo de reacción mecanografiado.

¡Gracias!

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Logré resolver esto usando un setTimout dentro de mi setInterVal. Siento que lo resolví un poco, pero funciona.

Todavía me gustaría saber si la gente piensa que esta es una buena solución o si hay mejores formas de hacerlo.

 function randomlyPlaced(){ videos.forEach(thisVideo => { setInterval(function() { setTimeout(function() { thisVideo.classList.add("fade-in"); const randomTop = Math.round(Math.random() * Height) - 20; const randomLeft = Math.round(Math.random() * Width) - 20; thisVideo.style.top = randomTop +"px"; thisVideo.style.left = randomLeft +"px"; fadeIn(thisVideo) }, 5000) fadeOut(thisVideo) }, (Math.floor(Math.random() * 12000) + 6000)) }) } randomlyPlaced()
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda