Мне нужно вставить огромную html-разметку в какой-то элемент dom, что займет некоторое время. Это причина, по которой я хочу отобразить индикатор предварительного загрузчика. У меня есть два блока: #preloader и #container. Некоторый код сначала отображает предварительный загрузчик, а затем начинает вставлять большую html-разметку.
Проблема в том, что прелоадер не отображается до тех пор, пока браузер не закончит рендеринг html-разметки. Я пробовал много решений (многие из них описаны здесь), но пока безуспешно.
Пример доступен ниже: https://jsfiddle.net/f9f5atzu/
<div id='preloader'>Preloader...</div>
<div id='container'>Container...</div>
#preloader {
display: none;
background-color: #f00;
color: #fff;
hight: 100px;
text-align: center;
padding: 10px 20px;
}
#container {
background-color: #ccc;
}
setTimeout(function() {
// Define variables
let domPreloader = document.getElementById('preloader');
let domContainer = document.getElementById('container');
const html = Array(100000).fill("<div>1</div>");
// Display preloader
domPreloader.style.display = 'hide';
domPreloader.offsetHeight;
domPreloader.style.webkitTransform = 'scale(1)';
domPreloader.style.display = 'block';
// Render a big html
domContainer.innerHTML = html;
}, 1000);
Есть ли решения проблемы?