Jquery, скрыть содержимое до загрузки
В настоящее время я использую этот script для ускорения перехода страницы:
$(document).ready(function() {
$(window).bind("unload", function() {});
$("body").css("display", "none");
$("body").hide();
$("body").fadeIn(2000);
$('a.fade1, a.fade2, a.fade3, a.fade4').click(function(event) {
event.preventDefault();
linkLocation = this.href;
$("body").fadeOut(700, redirectPage);
});
function redirectPage() {
window.location = linkLocation;
}
});
это работает как прелесть, когда содержимое находится в кеше, но когда изображение должно загружаться, оно на мгновение появляется, а затем скрывается и исчезает в
поэтому мне нужен способ скрыть контент до полной загрузки и только после этого пусть он будет исчезать в
надеюсь, что кто-то может мне помочь, спасибо заранее
Ответы
Ответ 1
Используйте CSS, чтобы скрыть элемент по умолчанию, а затем покажите его, когда захотите.
CSS
body {
display: none;
}
JQuery
$(window).load(function() {
// When the page has loaded
$("body").fadeIn(2000);
});
Событие загрузки отправляется элементу, когда он и все подэлементы имеют была полностью загружена.
См. событие загрузки.
Вы также можете заменить свои классы "fadeX" на один класс, что-то вроде "fade"
Ответ 2
Почему бы не поместить все начальные css, используя... CSS?
<head>
<!-- some stuff of yours -->
<style>body{display:none}</style>
</head>
<body>
</body>
Тогда ваш js должен беспокоиться только о вызове fadeIn()
. Таким образом, когда браузер отображает тэг <body>
, он уже знает, чтобы скрыть его, поэтому он не будет отображаться вообще, пока ваш fadeIn()
не будет вызван.
Ответ 3
На самом деле я бы не использовал CSS для начала, и вот почему. Если по какой-то причине JS не загружается на страницу, она также не сможет отобразить содержимое вашей страницы. Я бы сохранил все в script и записал в DOM, поэтому, если он терпит неудачу, ничего не происходит.
<script>
document.write('<style>body { visibility: hidden; } </style>');
</script>
<script type="text/javascript">
jQuery(document).ready(function(){
delay();
});
function delay() {
var secs = 1000;
setTimeout('initFadeIn()', secs);
}
function initFadeIn() {
jQuery("body").css("visibility","visible");
jQuery("body").css("display","none");
jQuery("body").fadeIn(1200);
}
</script>
Ответ 4
CSS для каждого изображения: видимость: скрытая;
jQuery.ready: видимость: видимая; (или используйте затухание или что угодно).
Почему visibility
вместо "отображения"? display
будет делать много "прыжков" и "сбоев" на вашей странице при загрузке элементов.
Кроме того, вы можете использовать метод загрузки jQuery вместо ready
.