Crear una barra de progreso con HTML y Javascript
Esta barra de progreso puede usarse como en el caso de algún sitio e descarga donde nos pide esperar unos cuantos segundos, en este caso es el mismo principio, pero en aun mas gráfico.
Una de las ventajas es que puede utilizarse en algún proyecto como un juego en web, en el cual para actualizar o llevar acabo una acción necesita pasar un periodo de tiempo, de esta forma podemos mostrarlo de manera gráfica y hacer mas amena la espera.
Ejemplo de la barra de progreso
Estilo de la barra de progreso – Se coloca un estilo a la barra de progreso para que se pueda visualizar correctamente. (debe ir entre <head></head>)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 | <style type="text/css"> div#vacio { background-color: #e4e4e4; border: 1px solid black; width: 280px; padding: 0px; padding-top: 0px; padding-left: 0px; padding-right: 0px; padding-bottom: 0px; } div#div_completado { position: relative; top: 0px; left: 0px; background-color: #9af; width: 0px; padding-top: 5px; padding: 0px; } div#div_barra { position: relative; top: 0px; left: 2px; color: #000; padding: 0px; padding-top: 0px; font-family: Verdana, Geneva, sans-serif; font-size: 14px; } div#div_boton { position: relative; top: 0px; left: 0px; height: 30px; text-align: center; padding: 0px; padding-top: 5px; font-family: Verdana, Geneva, sans-serif; font-size: 14px; } </style> |
Funciones de Javascript – Son las funciones en Javascript que harán los cálculos para decir cuanto porcentaje lleva y cuanto tiempo falta. (debe ir entre <body></body>)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 | <script type='text/javascript'> // Variables para controlar el inicio y termino de la cuenta var inicio = false; var termino = false; // Variables editables, para personalizar la barra de porcentaje var tam_barra = 280; // Tamaño de la barra en pixeles var seg_barra = 60; // Segundos de trabajo hasta 100% // Se toma la diferencia con respecto el tiempo actual var date = new Date(); var milisec_barra = seg_barra * 1000; var milisec_final = date.getTime() + milisec_barra; // Funcion que inicia el proceso function iniciar_proceso() { // Solo si no a iniciado el proceso se inicia if (inicio == false) { inicio = true; aumenta_barra(); } } // Funcion que aumenta el porcentaje de la barra function aumenta_barra() { // Solo si no a terminado sigue aumentando if (termino == false) { // Se toma el tiempo actual var ahora = new Date(); milisec_ahora = ahora.getTime(); // Se toma el tiempo restante para llegar a 100% var milisec_restante = Math.ceil((milisec_final - milisec_ahora) / 100); if (milisec_restante < 0) { milisec_restante = 0; } // Se divide el tiempo restante en horas, minutos y segundos var horas = Math.floor(milisec_restante / 36000); var minutos = Math.floor(milisec_restante % 36000 / 600); var segundos = Math.floor(milisec_restante % 36000 % 600) / 10; if ((segundos % 1) == 0) { segundos = segundos + ".0"; } var salida; if (horas > 0) { var salida = horas + " horas, " + minutos + " minutos y " + segundos + " segundos."; } else { if (minutos > 0) { var salida = minutos + " minuto(s) y " + segundos + " segundos."; } else { var salida = segundos + " segundos."; } } // Se genera el porcentaje a partir del tiempo restante para el 100% milisec_restante = Math.floor(milisec_restante) / 10; var porcentaje = Math.floor(((milisec_barra - milisec_restante * 1000) / milisec_barra) * 100); if (porcentaje < 0) { porcentaje = 1; } // Se verifica si se llego al tiempo final if (milisec_final >= milisec_ahora) { // Si aun no termina solo se muestra el porcentaje document.getElementById("div_boton").innerHTML = salida; document.getElementById("div_barra").innerHTML = porcentaje + "%"; } else { // Si termina se puede continuar mostrando o enviando alguna informacion termino = true; /*document.forma.submit();*/ // Mandar que termino el trabajo para permitir continuar document.getElementById("div_barra").innerHTML = "100% listo"; document.getElementById("div_boton").innerHTML = "<input class='form' type='button' value='Continuar'>"; } document.getElementById("div_completado").style.width = (porcentaje / 100) * tam_barra + "px"; setTimeout("aumenta_barra();", 100); } } // Se inicia el proceso despues de 300 milisegundos, se puede editar window.setTimeout("iniciar_proceso()", 300); </script> |
Estructura en HTML – Sera la estructura donde se mostrara la barra de progreso y al terminar se mostrara un botón. (debe ir entre <body></body>)
1 2 3 4 5 6 7 8 | <div align="center"> <div id="vacio" align="left"> <div id="div_completado"> <div id="div_barra"></div> </div> </div> <div id="div_boton"></div> </div> |
En este ejemplo yo coloque para que muestre un botón al finalizar la cuenta regresiva, pueden colocar que al presionar el botón pueda hacer alguna acción, pero también pueden cambiarlo para que se lleve acabo una función incluso traer un resultado a partir de una consulta en Ajax, para evitar que se tenga el resultado antes de terminar el tiempo.
Como ven es un script sencillo que pueden modificar o editar a su gusto, espero que les sea de utilidad.
| Imprimir artículo | Este artículo fue publicado por El_Happy el 28 junio, 2010 a las 13:55, y está archivado en CSS, HTML, Javascript, Programación. Sigue las respuestas a esta entrada a través de RSS 2.0. Puedes ir hasta abajo y dejar una respuesta. No se permiten pings. |


hace 1 año
Se ve bien
hace 1 año
ola disculpen las molestian muy bueno tu sitio soy nuevito programando sabes como inserto ese codigo a este es que al hacer click en el boton subir quiero k me aparesca esa barra de progreso que hiciste
saludos aqui va el codigo (no tomes en cuenta el php solo el html)
[contenido eliminado]
hace 1 año
Bueno podrías utilizar en el botón que se ejecute una función en javascript para mostrar la barra de progreso, el problema es que debe ser un tiempo estimado, no precisamente lo que tarda en subir el archivo.
<input type=”button” id=”subir” name=”subir” value=”Subir archivo” onclick=”mostrar_barra();”>
<script>
function mostrar_barra()
{
// Oculta el div donde tienes el input file y el boton de subida
document.getElementById(‘div_con_input_subida’).style.visibility = “none”;
// Muestra el div con la barra de progreso que estaba oculta (debes tenerlo ya puesto el html
document.getElementById(‘div_con_barra_y_mas’).style.visibility = “”;
// Elimina del primer codigo javascript que inicie automatico, se inicia al dar clic en subir
iniciar_proceso();
}
</script>
Espero me entiendas, saludos.
hace 1 año
[contenido eliminado]
este es mi formulario como inserto lo que tu hiciste a esto eso e lo k no entiendo
hace 1 año
Bueno no entiendo que es lo que quieres hacer, tienes en tu formulario solo 2 hidden no se si quieres que inicie al instante la barra de progreso o que es lo que deseas hacer.
Para agregarlo solo necesitas agregar el codigo tal como esta arriba.
Subir archivo
Archivo:
<input type=”hidden” name=”id” id=”id” value=”” />
<input type=”hidden” name=”nombre” id=”nombre” value=”” />
<div align=”center”>
<div id=”vacio” align=”left”>
<div id=”div_completado”>
<div id=”div_barra”></div>
</div>
</div>
<div id=”div_boton”></div>
</div>
hace 1 año
[contenido eliminado]
aqui ta el formulario por k kuando publico aki se corta la imagen
hace 1 año
Saludos.
hace 1 año
mmm
hace 11 meses
Hola esta muy bueno el codigo, como lo podria implementar para usarla con el envento para que termine cuando termine de Cargar la PAgina
Muchas GRacias
hace 3 meses
Saludos esta muy interesante el codigo, mira tengo un formulario en donde subo archivo y me gustaria utilizar esa barra de progreso para cuando el usuario descargue el archivo vea el porcentaje de descarga. Mi pregunta es ¿que si ese codigo que publicaste me sirve para mi formulario o debo de cambiarle algo para que ejecute la accion que dije?
Espero tu respuesta gracias
hace 1 semana
Muy bueno el código, estudiándolo un poco llegué a configurar colores, líneas, tiempo y tamaño, pero no logro agregarle un link al boton para que vaya a una página siguiente. Agradecería la ayuda de como hacerlo. Abrazo desde Arg!!
hace 1 semana
Podrías usar el atributo onClick para hacer esto:
<input class='form' type='button' value='Continuar' onClick='location.href="http://elhappy.net/"'>Espero te sirva.
hace 1 hora
Gracias por el código y las explicaciones. Me han resultado de una gran utilidad. A tu disposición.