Crear un cronómetro en HTML es una tarea educativa y práctica que te permite entender mejor cómo funcionan el HTML, CSS y JavaScript en conjunto. He trabajado personalmente en proyectos de desarrollo web donde implementar un cronómetro personalizado fue clave para crear aplicaciones interactivas, y hoy quiero compartir contigo un tutorial completo para que puedas crear tu propio cronómetro en HTML de manera fácil y rápida.
Este artículo está diseñado pensando en ti, sea que estés dando tus primeros pasos en la programación web o tengas algo de experiencia y quieras mejorar tus habilidades. Veremos desde los conceptos básicos hasta funcionalidades avanzadas, todo con ejemplos claros y código listo para usar.
¿Qué es un cronómetro y para qué sirve en la web?
Un cronómetro es una herramienta que mide el tiempo transcurrido entre dos eventos, pudiendo iniciar, pausar y reiniciar el conteo. En el ámbito web, se usa en aplicaciones de fitness, juegos, estudios, entrevistas en línea, y donde se requiera medir tiempos o contar hacia atrás. Implementar un cronómetro usando HTML para la estructura, CSS para el estilo visual y JavaScript para la lógica te permite obtener un control total sobre su comportamiento e integración en tus proyectos.
¿Qué necesitas para crear un cronómetro en HTML?
- Un editor de texto sencillo o un entorno de desarrollo (Visual Studio Code, Sublime Text, etc.).
- Un navegador moderno (Chrome, Firefox, Edge).
- Conocimientos básicos de HTML, CSS y JavaScript. No te preocupes si estás empezando: te explicaré cada paso de forma clara.
- Tiempo y ganas de aprender implementando con práctica.
Código básico: Cómo crear un cronómetro en HTML y JavaScript paso a paso
Voy a mostrarte un ejemplo completo y funcional que incluye:
- Visualización del tiempo en formato hh:mm:ss.
- Botones para iniciar, pausar y reiniciar el cronómetro.
- Explicación detallada de cada sección para que puedas modificarlo y ampliarlo.
<!DOCTYPE html>
<html lang=»es»>
<head>
<meta charset=»UTF-8″>
<title>Cronómetro Simple en HTML</title>
<style>
body {
font-family: Arial, sans-serif;
text-align: center;
margin-top: 50px;
}
#display {
font-size: 3em;
font-family: monospace;
margin-bottom: 20px;
}
button {
margin: 5px;
padding: 10px 20px;
font-size: 1.2em;
cursor: pointer;
border: none;
background-color: #007BFF;
color: white;
border-radius: 4px;
transition: background-color 0.3s ease;
}
button:hover {
background-color: #0056b3;
}
</style>
</head>
<body>
<div id=»display»>00:00:00</div>
<button id=»startBtn»>Iniciar</button>
<button id=»pauseBtn»>Pausar</button>
<button id=»resetBtn»>Reiniciar</button>
<script>
// Variables que almacenan tiempos y controlan el estado
let startTime = 0;
let elapsedTime = 0;
let timerInterval;
let running = false;
// Función que actualiza el cronómetro cada segundo
function updateTime() {
const currentTime = Date.now();
elapsedTime = currentTime – startTime;
// Cálculo de horas, minutos y segundos
const hours = Math.floor(elapsedTime / (1000 * 60 * 60));
const minutes = Math.floor((elapsedTime % (1000 * 60 * 60)) / (1000 * 60));
const seconds = Math.floor((elapsedTime % (1000 * 60)) / 1000);
// Mostrar en formato hh:mm:ss con ceros delante
document.getElementById(‘display’).textContent =
`${hours.toString().padStart(2,’0′)}:` +
`${minutes.toString().padStart(2,’0′)}:` +
`${seconds.toString().padStart(2,’0′)}`;
}
// Iniciar cronómetro
document.getElementById(‘startBtn’).addEventListener(‘click’, () => {
if (!running) {
startTime = Date.now() – elapsedTime;
timerInterval = setInterval(updateTime, 1000);
running = true;
}
});
// Pausar cronómetro
document.getElementById(‘pauseBtn’).addEventListener(‘click’, () => {
if (running) {
clearInterval(timerInterval);
running = false;
}
});
// Reiniciar cronómetro
document.getElementById(‘resetBtn’).addEventListener(‘click’, () => {
clearInterval(timerInterval);
running = false;
elapsedTime = 0;
document.getElementById(‘display’).textContent = «00:00:00»;
});
</script>
</body>
</html>
Detalles clave del código
setInterval(updateTime, 1000)
: ejecuta la funciónupdateTime
cada 1000 ms para refrescar el tiempo mostrado.- Uso de
Date.now()
para obtener el timestamp actual en milisegundos y calcular la diferencia. padStart(2,'0')
asegura que siempre muestre dos dígitos (por ejemplo, “08” en lugar de “8”).- Variables como
running
para evitar múltiples intervalos simultáneos.
Este ejemplo funcionó perfectamente cuando lo implementé en un sitio web de mi portafolio, y me permitió entender conceptos esenciales de temporizadores en JavaScript.
Cómo añadir estilo y mejorar la experiencia del usuario
Para hacer tu cronómetro más atractivo y usable, te recomiendo:
- CSS personalizado: añade colores, fuentes y tamaños que se adapten al diseño de tu página.
- Animaciones: por ejemplo, cambiar el color o añadir un efecto “parpadeo” cuando el cronómetro está en pausa.
- Mostrar milisegundos: para mayor precisión, puedes reducir el intervalo a 10 ms y mostrar decenas de segundos.
- Responsividad: asegúrate que el cronómetro se vea bien en móviles y tablets.
Por ejemplo, para mostrar milisegundos modifica el intervalo y función así:
timerInterval = setInterval(updateTime, 10);
Y el cálculo de milisegundos:
const milliseconds = Math.floor((elapsedTime % 1000) / 10);
document.getElementById(‘display’).textContent =
`${hours.toString().padStart(2,’0′)}:` +
`${minutes.toString().padStart(2,’0′)}:` +
`${seconds.toString().padStart(2,’0′)}.` +
`${milliseconds.toString().padStart(2, ‘0’)}`;
Funcionalidades avanzadas para tu cronómetro en HTML
Una vez que domines el básico, puedes incorporar funciones como:
- Cuenta regresiva: permite que el cronómetro cuente hacia atrás desde un tiempo definido.
- Guardar los tiempos en localStorage: para que el cronómetro mantenga su estado aun si recargas la página.
- Exportar resultados: generar un archivo CSV o JSON con los tiempos registrados para análisis posteriores.
- Alertas visuales o sonoras: para indicar que el tiempo terminó o que se alcanzó un límite.
Aquí tienes un ejemplo básico de guardar y recuperar el tiempo con localStorage
:
window.onload = () => {
if(localStorage.getItem(‘elapsedTime’)) {
elapsedTime = parseInt(localStorage.getItem(‘elapsedTime’), 10);
document.getElementById(‘display’).textContent = formatTime(elapsedTime);
}
};
function updateTime() {
// … código existente …
localStorage.setItem(‘elapsedTime’, elapsedTime);
}
Consejos y buenas prácticas para tu cronómetro web
- Optimiza el rendimiento: evita ejecutar funciones innecesarias y para los intervalos cuando el cronómetro esté pausado.
- Compatible con todos los navegadores: utiliza funciones bien soportadas por los principales navegadores modernos.
- Accesibilidad: asegúrate de que los botones sean fácilmente accesibles y usables para personas con diferentes capacidades.
- Prueba constantemente: valida el correcto funcionamiento en diferentes escenarios y dispositivos.
Conclusión: Crea tu cronómetro en HTML con confianza y creatividad
Si quieres profundizar en estas tecnologías y estar preparado para liderar esta transformación, te invito a conocer el Bootcamp Desarrollo Web de KeepCoding.
Crear un cronómetro en HTML con JavaScript es un excelente ejercicio para mejorar tus habilidades en desarrollo web. Desde el código básico que te he mostrado hasta las posibilidades avanzadas que puedes implementar, tienes todo lo necesario para tener un cronómetro funcional, personalizado y eficiente.
Para seguir profundizando en JavaScript y programación web, te recomiendo visitar la documentación oficial de Mozilla Developer Network (MDN).