preloader поверх php
Загружаю на странице тяжёлый php код, страница грузит в районе 2 секунд. Написал прелоадер на чистом js, css - по итогу он не отображается до тех пор, пока php код не загрузится. Какие варианты, чтобы прелоадер отображался сразу после открытия страницы (ещё до загрузки php), а исчезал после полной загрузки (включая php)? Желательно максимально простой способ, лишь для того, чтобы понял, как это работает.
Мой код:
<!doctype html>
<html lang="ru">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Прелоадер для сайта (демо)</title>
<style>
body {
margin: 0;
}
.preloader {
/*фиксированное позиционирование*/
position: fixed;
/* координаты положения */
left: 0;
top: 0;
right: 0;
bottom: 0;
/* фоновый цвет элемента */
background: #e0e0e0;
/* размещаем блок над всеми элементами на странице (это значение должно быть больше, чем у любого другого позиционированного элемента на странице) */
z-index: 1001;
}
.preloader__row {
position: relative;
top: 50%;
left: 50%;
width: 70px;
height: 70px;
margin-top: -35px;
margin-left: -35px;
text-align: center;
animation: preloader-rotate 2s infinite linear;
}
.preloader__item {
position: absolute;
display: inline-block;
top: 0;
background-color: #337ab7;
border-radius: 100%;
width: 35px;
height: 35px;
animation: preloader-bounce 2s infinite ease-in-out;
}
.preloader__item:last-child {
top: auto;
bottom: 0;
animation-delay: -1s;
}
@keyframes preloader-rotate {
100% {
transform: rotate(360deg);
}
}
@keyframes preloader-bounce {
0%,
100% {
transform: scale(0);
}
50% {
transform: scale(1);
}
}
.loaded_hiding .preloader {
transition: 0.3s opacity;
opacity: 0;
}
.loaded .preloader {
display: none;
}
</style>
</head>
<body>
<!-- Прелоадер -->
<div class="preloader">
<div class="preloader__row">
<div class="preloader__item"></div>
<div class="preloader__item"></div>
</div>
</div>
<?php
// PHP код, который грузится несколько секунд
?>
<script>
window.onload = function () {
document.body.classList.add('loaded_hiding');
window.setTimeout(function () {
document.body.classList.add('loaded');
document.body.classList.remove('loaded_hiding');
}, 500);
}
</script>
</body>
</html>