Ось рішення за допомогою 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);
});
Отже, у гіршому випадку ваш сайт займе додаткову секунду, щоб з’явитись.