2011-11-10 14 views
8

Esistono tutorial o plug-in per la visualizzazione di un sito sbiadito una volta che è stato caricato correttamente, per limitare eventuali scuotimenti, ecc.jQuery Fade nel sito/contenuto una volta caricato?

suppongo sarebbe più facile se fosse solo un settore specifico, come intestazione o piè di pagina sarà già memorizzato nella cache, dalle pagine precedenti ...

Per esempio una pagina di portafoglio con diverse miniature, appaiono solo agevolmente quando è pronto.

Questo può essere fatto?

Grazie per tutto l'aiuto :)

risposta

16

Sì, avvolgere il contenuto con un div (ad esempio <div id="main-content">) e nel CSS mettere questo:

div#main-content { display: none; } 

quindi utilizzare questo script.

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

C'è un ripiego per questo nel caso in cui qualcuno non abbia Javascript abilitato? – optimus203

1

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

in cui il contenitore è l'id del div che contiene l'intero contenuto.

26

In primo luogo, un punto laterale: in generale, i web designer impiegano molto tempo a cercare di migliorare il tempo di caricamento della pagina percepito, facendo in modo che le cose vengano visualizzate il più rapidamente possibile. Questo va attivamente nella direzione opposta, presentando una pagina vuota finché tutto è pronto, il che potrebbe non essere l'ideale.

Ma se è appropriato per la situazione:.

Dal momento che tutto visibile sarà un discendente di body, si potrebbe caricare body nascosti e poi sfumare in Sarebbe importante includere un ripiego per gli utenti senza JavaScript (tipicamente meno del 2% almeno according to Yahoo, ma ancora). Quindi, seguendo le linee di:

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

Un paio di variazioni da parte sceneggiatura di che, a seconda di quando si desidera che il fade-in a verificarsi:

Attendere "pronto" evento:

Live Copy

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

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

}); 

Wa per l'evento window#load:

Live Copy

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

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

})(jQuery); 

window#load incendi molto tardi nel processo di caricamento della pagina, dopo che tutte le risorse esterne (comprese tutte le immagini) hanno caricato. Ma hai detto che volevi aspettare che tutto fosse caricato, quindi potrebbe essere quello che vuoi fare. Sicuramente farà sembrare la tua pagina più lenta ...

+0

Bene ... ci sono pochissimi che pensano al fallback. +1 per Nice suggerimento –

+0

Vero. Ma vorrei ancora mettere il corpo {display: none; } nel file CSS mentre cerco di evitare il più possibile stili incorporati del genere. –

+0

@sushilbharwani: Sì. In genere è <= 2% dei visitatori (almeno, [è il numero di Yahoo] (http://developer.yahoo.com/blogs/ydn/posts/2010/10/how-many-users-have-javascript-disabled/)), ma ancora ... –

4

Un altro modo per farlo è tramite il progetto Animate.css.Il suo puro CSS quindi non c'è bisogno di fare affidamento su JS:.

https://daneden.me/animate/

basta aggiungere il e la classe 'animato' 'fadeIn' al vostro elemento padre e tutti i bambini svanirà nel

1
$(document).ready(function() { 
    $('body').hide().fadeIn('fast'); 
}); 
Problemi correlati