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

320
Visualizações
¿Cómo puedo hacer líneas animadas entre las diapositivas de Swiper con leader-line js?

Estoy tratando de construir una línea de tiempo con Swiper y leader-line.js. Intenté usarlo con las funciones de transición de Swiper, pero no funciona correctamente. Aquí está mi código de línea guía;

 const items = document.querySelectorAll(".circle"); const options = { startSockets: ["top", "bottom", "right", "bottom", "left", "right"], endSockets: ["top", "bottom", "top", "top", "top", "top"] }; for(let i = 0; i < items.length - 1; i++) { new LeaderLine(items[i], items[i + 1], { startPlug: "behind", endPlug: "behind", size: 2, dash: true, startPlugSize: 3, endPlugSize: 1, startSocket: "right", endSocket: "left", color: "#fb8c00", path: 'straight', }); }

Hice un ejemplo de codepen para que quede claro.

https://codepen.io/Xteripus/pen/yLopBNp?editors=1010

Quiero hacer que las líneas se adhieran al contenedor de Swiper para que cuando el elemento Swiper se mueva, la línea se mueva con él. ¡Gracias por adelantado!

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

0

Anseki, desarrollador del complemento, creó esta solución, ¡espero que ayude!

Aquí está js:

 $(".circle").each(function (index, el) { $(el).css({ top: Math.random() * ($(".swiper-slide ").height() - 300 - $(this).height()) }); }); const items = document.querySelectorAll(".circle"); const options = { startSockets: ["top", "bottom", "right", "bottom", "left", "right"], endSockets: ["top", "bottom", "top", "top", "top", "top"] }; const lines = []; for (let i = 0; i < items.length - 1; i++) { lines.push( new LeaderLine(items[i], items[i + 1], { startPlug: "behind", endPlug: "behind", size: 2, dash: true, startPlugSize: 3, endPlugSize: 1, startSocket: "right", endSocket: "left", color: "#fb8c00", path: "straight" }) ); } swiper.on("sliderMove", () => { lines.forEach((line) => { line.position(); }); }); let req; function position(stop) { cancelAnimationFrame(req); lines.forEach((line) => { line.position(); }); if (stop !== true) { req = requestAnimationFrame(position); } } swiper.on("slideChangeTransitionStart", position); swiper.on("slideResetTransitionStart", position); swiper.on("slideChangeTransitionEnd", () => { position(true); }); swiper.on("slideResetTransitionEnd", () => { position(true); });

https://codepen.io/anseki/pen/qBXpEWV?editors=1010

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