2011-11-10 13 views
8

Czy są jakieś tutoriale lub wtyczki do wyświetlania witryny po jej załadowaniu, w celu ograniczenia wszelkich wstrząsów itp., Więc zawartość wydaje się płynnie w zasadzie?jQuery Znikną na stronie/treści po załadowaniu?

Przypuszczam, że byłoby łatwiej, gdyby to było tylko specyficzny obszar, w nagłówku lub stopce będzie już w pamięci podręcznej, z poprzednich stronach ...

Na przykład strona portfel z różnych miniaturek, tylko pojawiają się sprawnie, gdy będzie gotowy.

Czy to można zrobić?

Dziękuję za pomoc :)

Odpowiedz

16

Tak, zawinąć zawartości z div (np <div id="main-content">) i umieścić w css to:

div#main-content { display: none; } 

Następnie za pomocą tego skryptu.

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

Czy istnieje taka możliwość w przypadku, gdyby ktoś nie miał włączonej obsługi JavaScript? – optimus203

1

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

gdzie zbiornik jest id div zawierającego całą swoją zawartość.

26

Po pierwsze, punkt boczny: ogólnie rzecz biorąc, projektanci stron internetowych poświęcają dużo czasu na próbę poprawienia postrzeganego czasu wczytywania strony, pokazując rzeczy tak szybko, jak to możliwe. Aktywnie idzie to w drugą stronę, przedstawiając pustą stronę, dopóki wszystko nie będzie gotowe, co może nie być idealne.

Ale jeśli jest to właściwe dla danej sytuacji.

Ponieważ wszystko widoczne będzie potomkiem body, można załadować body ukryte i zgaśnie to w Byłoby ważne, aby zawierać awaryjne dla użytkowników bez JavaScript (zwykle mniej niż 2% co najmniej according to Yahoo, ale wciąż). Więc wzdłuż linii:

(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> 

Kilka odmian ze strony scenariusza, który, w zależności od kiedy chcesz Ściemniane wystąpić:

Poczekaj na „gotowe” wydarzenie:

Live Copy

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

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

}); 

Wa to na razie window#load:

Live Copy

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

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

})(jQuery); 

window#load pożary bardzo późno w procesie ładowania strony, gdy wszystkie zasoby zewnętrzne (w tym wszystkich obrazów) zostały załadowane. Ale powiedziałeś, że chcesz poczekać, aż wszystko zostanie załadowane, więc może być to, co chcesz zrobić. Z pewnością sprawi, że Twoja strona będzie wolniejsza ...

+0

Dobrze .. jest bardzo niewielu, którzy myślą o awaryjnym. +1 dla miłej sugestii –

+0

Prawda. Ale nadal wystawiałbym ciało na działanie: brak; } do pliku CSS, ponieważ staram się unikać takich stylów osadzonych, jak to tylko możliwe. –

+0

@sushilbharwani: Tak. Zazwyczaj jest to <= 2% odwiedzających (przynajmniej [to numer Yahoo] (http://developer.yahoo.com/blogs/ydn/posts/2010/10/how-many-users-have-javascript-disabled/)), ale nadal ... –

4

Innym sposobem na osiągnięcie tego celu jest projekt Animate.css.Jej czysty CSS, więc nie ma potrzeby, aby polegać na JS.

https://daneden.me/animate/

Wystarczy dodać „animowany” i klasy „fadeIn” do elementu nadrzędnego, a wszystkie dzieci będą zanikać w

1
$(document).ready(function() { 
    $('body').hide().fadeIn('fast'); 
}); 
Powiązane problemy