const background = document.querySelector('.bg');
const loadingText = document.querySelector('.loading-text');
//used for the text=0%
let load = 0;
//repeatedly calls a function or executes a code snippet, with a fixed time delay between each call.
let int = setInterval(blurring, 10);
function blurring() {
//increase text num with each iteration
load++;
// When 100
if (load > 99) {
//Cancels a timed, repeating action which was previously established by a call to setInterval().
clearInterval(int);
}
loadingText.innerText = `${load}%`;
//Map a range of numbers to another range of numbers e.g text 0 --> 100% and opacity 1 --> 0
loadingText.style.opacity = scale(load, 0, 100, 1, 0);
//Map a range of numbers to another range of numbers e.g text 0 --> 100 and filter: blur(10px --> 0)
background.style.filter = `blur(${scale(load, 0, 100, 10, 0)}px)`;
}
function scale(number, inMin, inMax, outMin, outMax) {
return ((number - inMin) * (outMax - outMin)) / (inMax - inMin) + outMin;
}
Preview:
downloadDownload PNG
downloadDownload JPEG
downloadDownload SVG
Tip: You can change the style, width & colours of the snippet with the inspect tool before clicking Download!
Click to optimize width for Twitter