2012-07-24 9 views
6

Questa è solo una breve domanda, non ho un esempio ma sto usando un cms su misura e al momento non abbiamo accesso al capo della pagina web quindi qualche css deve essere posizionato all'esterno della testa causando un flash di contenuto non formattato al caricamento della pagina.Come smettere di lampeggiare di contenuto inascolto

Basta chiedersi se qualcuno su di lei conosce una soluzione rapida con jquery o qualcosa per fermare questo.

So che mettere i CSS non in-linea è una cattiva pratica, ma mi chiedevo se c'è un round di lavoro.

Qualsiasi aiuto apprezzato

risposta

10

La soluzione di base per gestire FOUC è quello di tenerlo nascosto fino a quando non è stato correttamente stile.

Suppongo che tu abbia il controllo sul contenuto che viene visualizzato senza un programma? In tal caso, avvolgerlo in un <div id="some-div" style="display:none">... content ... </div>. Quindi utilizzare jQuery per mostrare quando l'intero documento è pronto:

$(function() { $("#some-div").show(); }); 
+2

Quello è grande grazie, se JS è diabled vuol dire che l'utente non vedrà il contenuto? –

+3

Sì, è vero. Richiede JS per funzionare. –

+0

L'evento DOMContentLoaded non attende il download, l'analisi e l'applicazione dei fogli di stile. In secondo luogo, il browser non applicherà alcuno stile al contenuto nascosto con display: nessuno; –

0

aggiungere una classe al contenuto di nome no-fouc, impostare la classe al display: none nel file CSS comuni, quindi rimuovere la classe al caricamento della pagina. Il vantaggio di questa soluzione è che gestisce un numero arbitrario di elementi e può essere riutilizzato su tutte le pagine.

$(function() { 
 
    $('.no-fouc').removeClass('no-fouc'); 
 
    $('#dialog').dialog(); 
 
});
.no-fouc { 
 
    display: none; 
 
}
<link rel="stylesheet" href="//code.jquery.com/ui/1.12.1/themes/base/jquery-ui.css"> 
 
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<script src="https://code.jquery.com/ui/1.12.1/jquery-ui.min.js"></script> 
 

 
<div class="no-fouc"> 
 
    <div id="dialog" title="Basic dialog"> 
 
    <p>This is the default dialog which is useful for displaying information. The dialog window can be moved, resized and closed with the 'x' icon.</p> 
 
    </div> 
 
</div>

Problemi correlati