jQuery исчезают в сайте / контент, как только он загружен? - PullRequest
8 голосов
/ 10 ноября 2011

Существуют ли какие-либо учебные пособия или плагины для того, чтобы скрыть сайт, когда он загружен должным образом, чтобы ограничить любое дрожание и т. Д., Чтобы контент в основном выглядел плавно?

Полагаю, было бы проще, если бы это была просто определенная область, поскольку верхний или нижний колонтитул уже будет кэшироваться с предыдущих страниц ...

Например, страница портфолио с различными миниатюрами, они отображаются плавно, только когда готовы.

Можно ли это сделать?

Спасибо за любую помощь:)

Ответы [ 6 ]

27 голосов
/ 10 ноября 2011

Во-первых, побочный момент: в целом, веб-дизайнеры тратят много времени, пытаясь улучшить воспринимаемое время загрузки страницы, показывая вещи как можно быстрее. Это активно идет другим путем, представляя пустую страницу, пока все не будет готово, что может быть не идеально.

Но если это подходит для вашей ситуации:

Поскольку все видимое будет потомком body, вы можете загрузить body скрытый, а затем добавить его. Было бы важно включить запасной вариант для пользователей без JavaScript (обычно менее 2%, по крайней мере * 1007). * согласно Yahoo , но все же). Итак, в соответствии с:

(Live Copy)

<!DOCTYPE html>
<html>
<head>
<title>Example</title>
<!-- This next would probably be in your main CSS file, but shown
     inline here just for purposes of the example
-->
<style type="text/css">
body {
    /* Hide it for nifty fade-in effect */
    display: none;
}
</style>
<!-- Fallback for non-JavaScript people -->
<noscript>
<style type="text/css">
body {
    /* Re-displays it by overriding the above */
    display: block;
}
</style>
</noscript>
</head>
<body>
...content...
<script src="jquery.js"></script>
<script>
// This version runs the function *immediately*
(function($) {

  $(document.body).fadeIn(1000);

})(jQuery);
</script>
</body>
</html>

Пара вариантов сценария, в зависимости от того, когда вы хотите, чтобы появление происходило:

Ожидание "готового" события:

Live Copy

// This version waits until jQuery's "ready" event
jQuery(function($) {

  $(document.body).fadeIn(1000);

});

Ожидание события window#load:

Live Copy

// This version waits until the window#load event
(function($) {

  $(window).load(function() {
    $(document.body).fadeIn(1000);
  });

})(jQuery);

window#load запускает очень поздно в процессе загрузки страницы после загрузки всех внешних ресурсов (включая все изображения). Но вы сказали, что хотите подождать, пока все не загрузится, так что это может быть то, что вы хотите сделать. Это определенно заставит вашу страницу выглядеть медленнее ...

16 голосов
/ 10 ноября 2011

Да, оберните ваш контент с помощью div (например, <div id="main-content">) и укажите в вашем CSS:

div#main-content { display: none; }

Тогда используйте этот скрипт.

$(document).ready(function() {
    $('#main-content').fadeIn();
});
5 голосов
/ 03 января 2014

Еще один способ сделать это - через проект Animate.css. Это чистый CSS, поэтому нет необходимости полагаться на JS:

https://daneden.me/animate/

Просто добавьте классы animated и fadeIn к родительскому элементу, и все дочерние элементы начнут появляться.

1 голос
/ 29 сентября 2015
$(document).ready(function() {
    $('body').hide().fadeIn('fast');
});
1 голос
/ 10 ноября 2011

jQuery(document).ready(function(){
jQuery("#container").fadeIn();
});

где контейнер - это идентификатор элемента div, содержащего весь ваш контент.

0 голосов
/ 01 мая 2019
div#main-content { display: block; }

Чтобы заставить его работать с Javascript или без него, вы можете использовать

document.getElementById("#main-content").style.display = "none";

Затем используйте этот скрипт.

$(document).ready(function() {
 $('#main-content').fadeIn();
});
...