Как я могу отобразить загрузочный GIF, пока не будет загружена вся HTML-страница
У меня есть довольно интенсивная веб-страница с использованием HTML и CSS, которая приводит к тому, что некоторые элементы загружаются быстрее, чем другие, когда пользователь заходит на страницу. Для загрузки фона может потребоваться некоторое время, и так далее... Становится довольно уродливо видеть, как все загружается элемент за элементом...
Поэтому мне интересно, как я могу сначала загрузить другую страницу (page1, которая имеет просто gif и голые минимумы html), а затем page2 (страница с интенсивным html) появится только после того, как браузер клиента извлечет все страницы html,
Я считаю, что это можно сделать с помощью JQuery, о котором я почти ничего не знаю...
Любой совет будет оценен, спасибо,
2 ответа
Используйте следующий HTML:
<div id="loading"></div>
И этот CSS:
#loading {
background: url('spinner.gif') no-repeat center center;
position: absolute;
height: 100%;
width: 100%;
}
И следующий jQuery:
$(window).ready(function() {
$('#loading').hide();
});
Кроме того, вы можете использовать https://www.askapache.com/online-tools/base64-image-converter/ чтобы преобразовать ваш GIF-файл в строку формата 64 и использовать ее вместо spinner.gif
,
<div id="overlay"></div>
<style>
#overlay {
position: fixed;
background: rgba(0,0,0,0.8);
width: 100%;
height: 100%;
top: 0;
left: 0;
}
.hide {
display: none;
}
</style>
<script>
$(window).load(function() {
$('#overlay').addClass('hide');
});
</script>
Я реализовал в Laravel, и он работал как ожидалось,
<style>
.loader {
position: fixed;
left: 0px;
top: 0px;
width: 100%;
height: 100%;
z-index: 9999;
background-color: #ffffffcf;
}
.loader img{
position: relative;
left: 40%;
top: 40%;
}
</style>
<div class="loader" ><img src="{{asset('public/img/loader.gif')}}"></div>
<script>
window.onload = function()
{
//display loader on page load
$('.loader').fadeOut();
}
</script>