2-е обновление
В дублирующих ответах четко договориться о том , что единственный способ, кроме document.write
, чтобы изначально скрыть содержимое и показать его после загрузки страницы.
Также в этом посте есть несколько замечательных замечаний, в которых говорится:
Браузеры делают части на странице, как только они удобны, у них достаточно информации для этого, и это хорошо. Десять лет назад люди, которые спрашивали противоположное тому, что вы хотите, когда дело доходило до длинных сроков рендеринга за их огромные столы ... - CBroe
Учитывая вышеизложенное, я решил оставить свой ответ ниже, поскольку в дублированном сообщении нет решения на основе CSS, следовательно, IMHO, ниже приведен лучший подход к вашей конкретной проблеме.
Оригинальный ответ
Самое близкое, что я могу придумать, - сделать что-то подобное в вашем <head>
теге
<script type='text/javascript'>
var d = document;
var s = d.createElement('link');
s.setAttribute('type', 'text/css');
s.setAttribute('href', '/path-to-css.css');
d.getElementsByTagName('head')[0].appendChild(s);
</script>
Если HTML все еще выглядит перепутанным до того, как связанный CSS успел загрузить, вам, вероятно, понадобится сделать что-то вроде этого, где вы просто спрячете body
тег в <head>
и затем покажете его с загруженным CSS
<style>
body {display: none;}
</style>
<script type='text/javascript'>
var d = document;
var s = d.createElement('link');
s.setAttribute('type', 'text/css');
s.setAttribute('href', '/path-to-css.css');
d.getElementsByTagName('head')[0].appendChild(s);
</script>
И в файле CSS это
body {display: block;}
Обратите внимание, что некоторые методы javascript могут не воспроизводиться при использовании display: none
, и если это так, вы можете использовать, например,visibility: hidden/visible
обновленный
При желании вы можете отправить страницу только на скрипт, определить, какой CSS предоставить, а затем загружать HTML с помощью AJAX или просто перенаправить / перезагрузить и передать, какой CSS использовать с ним.