Вот решение с использованием jQuery:
<script type="text/javascript">
$('#container').css('opacity', 0);
$(window).load(function() {
$('#container').css('opacity', 1);
});
</script>
Я поставил этот скрипт сразу после моего </body>
тега. Просто замените "#container" селектором для элементов DOM, которые вы хотите скрыть. Я попробовал несколько вариантов этого (в том числе .hide()
/ .show()
и .fadeOut()
/ .fadeIn()
), и просто установка непрозрачности, похоже, имеет наименьшие побочные эффекты (мерцание, изменение высоты страницы и т. Д.). Вы также можете заменить css('opacity', 0)
на fadeTo(100, 1)
для более плавного перехода. (Нет, fadeIn()
не будет работать, по крайней мере, не в jQuery 1.3.2.)
Теперь предостережения: я реализовал вышеупомянутое, потому что я использую TypeKit, и при обновлении страницы появляется раздражающее мерцание, а загрузка шрифтов занимает несколько сотен миллисекунд. Поэтому я не хочу, чтобы какой-либо текст появлялся на экране, пока не загрузится TypeKit. Но, очевидно, у вас большие проблемы, если вы используете приведенный выше код и что-то на вашей странице не загружается. Есть два очевидных способа, которыми это можно улучшить:
- Максимальный лимит времени (скажем, 1 секунда), после которого все появляется, загружена страница или нет
- Какой-то индикатор загрузки (скажем, что-то из http://www.ajaxload.info/)
Я не буду беспокоиться о реализации индикатора загрузки здесь, но ограничение по времени легко. Просто добавьте это в скрипт выше:
$(document).ready(function() {
setTimeout('$("#container").css("opacity", 1)', 1000);
});
Так что теперь, в худшем случае, вашей странице потребуется дополнительная секунда, чтобы появиться.