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

181
Visualizações
Cómo agregar un temporizador dentro de la barra de progreso

Quiero agregar un temporizador que disminuya automáticamente (como 10 segundos, 9 segundos... hasta 0 segundos) pero la barra de progreso aumentará. Y soy nuevo en javascript, y el siguiente código también se copió de otro sitio, así que ayúdenme a agregar un temporizador dentro de la barra de progreso

Hasta ahora hice este código

Quiero hacer como esta Demo

 <div class="progress"></div>

<style>
.progress-bar {
 height: 20px;
 background: #1da1f2;
 box-shadow: 2px 14px 15px -7px rgba(30, 166, 250, 0.36);
 border-radius: 50px;
 transition: all 0.5s;
}
.progress {
 width: 100%;
 display: flex;
 flex-flow: column nowrap;
 justify-content: center;
 align-items: start;
 background: #e6e9ff;
 border-radius: 20px;
 box-shadow: 0px 10px 50px #abb7e9;
}
 </style>
<script>
 /* 
 * (class)Progress<nowValue, minValue, maxValue>
 */

//helper function-> return <DOMelement>
function elt(type, prop, ...childrens) {
 let elem = document.createElement(type);
 if (prop) Object.assign(elem, prop);
 for (let child of childrens) {
 if (typeof child == "string") elem.appendChild(document.createTextNode(child));
 else elem.appendChild(elem);
 }
 return elem;
}

//Progress class
class Progress {
 constructor(now, min, max, options) {
 this.dom = elt("div", {
 className: "progress-bar"
 });
 
 this.min = min;
 this.max = max;
 this.intervalCode = 0;
 this.now = now;
 this.syncState();
 if(options.parent){
 document.querySelector(options.parent).appendChild(this.dom);
 } 
 else document.body.appendChild(this.dom)
 }

 syncState() {
 this.dom.style.width = this.now + "%";
 }
startTo(step, time) {
 if (this.intervalCode !== 0) return;
 this.intervalCode = setInterval(() => {
 console.log("sss")
 if (this.now + step > this.max) {
 this.now = this.max;
 this.syncState();
 clearInterval(this.interval);
 this.intervalCode = 0;
 return;
 }
 this.now += step;
 this.syncState()
 }, time)
 }
 end() {
 this.now = this.max;
 clearInterval(this.intervalCode);
 this.intervalCode = 0;
 this.syncState();
 }
}

 let pb = new Progress(15, 0, 100, {parent : ".progress"});

//arg1 -> step length
//arg2 -> time(ms)
pb.startTo(5, 500);

//end to progress after 5s
setTimeout( () => {
 pb.end()
}, 10000)
 </script>
almost 4 years ago · Santiago Trujillo
1 Respostas
Responde à pergunta

0

Creo que el problema principal es que el código que copiaste es demasiado complicado, especialmente para los principiantes. Lo que yo recomendaría es empezar con lo que sabes y construir.

Aquí está la funcionalidad que desea escribir utilizando solo los principios básicos de JavaScript y CSS.

 let initialTime = 10; //All time in seconds
let timeLeft = initialTime;

let interval;
let progressBarTextElement = document.getElementById('progress-bar-text');
let progressBarElement = document.getElementById('progress-bar');

function render() {
 let progressPercentage = (1 - (timeLeft / initialTime) ) * 100;
 
 progressBarElement.style.width = progressPercentage + '%';
 progressBarTextElement.innerHTML = timeLeft + 's';
}

function tick() {
 timeLeft = timeLeft - 1;
 if(timeLeft <= 0) {
 clearInterval(interval); //Stops interval
 }
 
 render(); //Updates html
}

function startProgressBar() {
 interval = setInterval(tick, 1000); //Will call tick every second
 render();
}

startProgressBar();
 html {font-family: -apple-system,BlinkMacSystemFont,"Segoe UI","Roboto","Oxygen","Ubuntu","Cantarell","Fira Sans","Droid Sans","Helvetica Neue",sans-serif;}

.progress-bar-continer {
 height: 80px;
 width: 100%;
 position: relative;
 display: flex;
 justify-content: center;
 align-items: center;
 background-color: #406086;
}

.progress-bar {
 background-color: #1b3e80;
 position: absolute;
 top: 0;
 bottom: 0;
 left: 0;
 width: 0%;
 transition: width 1s; /* Makes progressBar smooth */
 transition-timing-function: linear; /* Try to remove this line for more tick tock feel */
 
}

.progress-bar-text {
 color: white;
 font-size: 24px;
 font-weight: 700;
 position: relative;
 z-index: 1;
}
 <div class="progress-bar-continer">
 <div class="progress-bar" id="progress-bar"></div>
 <div class="progress-bar-text" id="progress-bar-text"></div>
<div>

Intente comprender el código lo mejor que pueda y no tendrá problemas para agregar las funciones que desee. Todas las cosas elegantes vendrán más tarde con la experiencia.

almost 4 years ago · Santiago Trujillo 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