Hier ist eine Lösung mit jQuery:
<script type="text/javascript">
$('#container').css('opacity', 0);
$(window).load(function() {
$('#container').css('opacity', 1);
});
</script>
Ich habe dieses Skript direkt nach meinem </body>
Tag eingefügt. Ersetzen Sie einfach "#container" durch einen Selektor für die DOM-Elemente, die Sie ausblenden möchten. Ich habe verschiedene Variationen davon ausprobiert (einschließlich .hide()
/ .show()
, und .fadeOut()
/ .fadeIn()
), und nur das Einstellen der Deckkraft scheint die geringsten negativen Auswirkungen zu haben (Flimmern, Ändern der Seitenhöhe usw.). Sie können auch ersetzen css('opacity', 0)
mit fadeTo(100, 1)
für einen reibungslosen Übergang. (Nein,fadeIn()
funktioniert nicht, zumindest nicht unter jQuery 1.3.2.)
Nun die Vorbehalte: Ich habe das oben Genannte implementiert, weil ich TypeKit verwende und es ein nerviges Flackern gibt, wenn Sie die Seite aktualisieren und das Laden der Schriftarten einige hundert Millisekunden dauert. Ich möchte also nicht, dass Text auf dem Bildschirm angezeigt wird, bis TypeKit geladen wurde. Aber offensichtlich haben Sie große Probleme, wenn Sie den obigen Code verwenden und etwas auf Ihrer Seite nicht geladen werden kann. Es gibt zwei offensichtliche Möglichkeiten, wie es verbessert werden könnte:
- Ein maximales Zeitlimit (z. B. 1 Sekunde), nach dem alles angezeigt wird, unabhängig davon, ob die Seite geladen ist oder nicht
- Eine Art Ladeanzeige (z. B. etwas von http://www.ajaxload.info/ )
Ich werde mich nicht darum kümmern, die Ladeanzeige hier zu implementieren, aber das Zeitlimit ist einfach. Fügen Sie dies einfach dem obigen Skript hinzu:
$(document).ready(function() {
setTimeout('$("#container").css("opacity", 1)', 1000);
});
Im schlimmsten Fall dauert es also eine zusätzliche Sekunde, bis Ihre Seite angezeigt wird.