Funcionamiento
El botón de descarga con temporizador y animación de carga se activará cuando el usuario haga clic en él. En ese momento, el botón desaparecerá y en su lugar aparecerá un temporizador de 20 segundos y una animación de carga. Durante los 20 segundos, el temporizador mostrará una cuenta regresiva y la animación de carga se llenará progresivamente para indicarle al usuario que la página está trabajando en segundo plano para ofrecerle la descarga. Una vez que el temporizador llegue a cero, la descarga se iniciará automáticamente y se abrirá en una nueva ventana.
Con un botón de descarga con temporizador y animación de carga, podemos ofrecer una mejor experiencia al usuario al darle tiempo para leer información importante antes de descargar un archivo, al mismo tiempo que le indicamos que la página está trabajando en segundo plano para ofrecerle la descarga. Este tipo de botón es fácil de implementar en una página de Blogger utilizando solo HTML, CSS y JavaScript, y puede hacer que la experiencia del usuario sea mucho más agradable y eficiente.
Demostración
CÓDIGO HTML, CSS, JAVASCRIPT
HTML
<button id="download-button" data-link="https://www.example.com/download" target="_blank">Descargar</button>
<div id="timer"></div>
<div id="loading"></div>
CSS
#download-button {
display: block;
margin: 20px auto;
padding: 10px 20px;
border-radius: 5px;
background-color: #007bff;
color: #fff;
font-size: 18px;
cursor: pointer;
}
#timer {
text-align: center;
font-size: 24px;
margin-bottom: 10px;
}
#loading {
width: 0%;
height: 5px;
background-color: #007bff;
transition: width 0.2s ease-out;
margin-bottom: 20px;
}
@media screen and (max-width: 768px) {
#download-button {
font-size: 16px;
}
#timer {
font-size: 18px;
}
}
JAVASCRIPT
const downloadBtn = document.getElementById('download-button');
const timer = document.getElementById('timer');
const loading = document.getElementById('loading');
downloadBtn.addEventListener('click', function() {
downloadBtn.style.display = 'none';
timer.style.display = 'block';
loading.style.width = '100%';
let timeLeft = 20;
let downloadLink = downloadBtn.getAttribute('data-link');
let countdown = setInterval(function() {
timeLeft--;
timer.innerText = `La descarga comenzará en ${timeLeft} segundos...`;
if (timeLeft == 0) {
clearInterval(countdown);
window.open(downloadLink, '_blank');
}
}, 1000);
});