2012-11-23 12 views
7

Ho un problema con firefox. Sul mio sito ho molte immagini. Quando sfoglio le pagine di Firefox, il titolo dell'immagine e del bordo è visibile durante il caricamento dell'immagine. Una volta completato il download, questo bordo/titolo scompare e viene sostituito con un'immagine.Bordo e titolo visualizzati durante il caricamento dell'immagine in Firefox

Questo succede solo in Firefox. Chrome e altri browser caricano immagini senza bordi e titoli che sembrano molto più 'puliti'. A parole, questi bordi prodotti da firefox sono brutti.

Posso rimuoverlo, sostituire con un caricatore o qualcosa del genere? Ho provato ad aggiungere css loader con background-image: url() ... pensando che questi confini non saranno visibili, tuttavia sono ancora lì.

In che modo siti come pinterest, dribbble e altri offrono immagini senza produrre bordi in firefox?

Grazie

Border in Firefox while image is loading

+0

Elimina riga 32 del tuo CSS. – Rob

risposta

14

È possibile utilizzare il :-moz-loading psuedo-class per impostarlo a non appare. Qualcosa del genere dovrebbe funzionare:

img:-moz-loading { 
    visibility: hidden; 
} 

Un'alternativa a questo è qualcosa di simile a uno script di carico AJAX, che caricherà l'immagine in background e visualizzare una finestra di caricamento, o l'animazione. Ci sono molte tecniche per farlo, e la ricerca qui o su Google dovrebbe richiedere molti molti risultati su come farlo in modo efficace.

+0

Brillante! Questo ha risolto il mio problema. Grazie mille. :) –

+0

Dalla pagina citata, la pseudo-classe non * combacia con gli elementi nel processo di caricamento, quindi non rimuoverà il fenomeno per un'immagine di grandi dimensioni che richiede tempo per caricarsi. –

+0

@ JukkaK.Korpela Sì, è corretto. Ma a cosa si riferisce quando i dati hanno iniziato ad arrivare, questa psuedo-class non si applicherà più. Nel momento in cui la richiesta di immagine non ha ancora ricevuto risposta, e non ci sono dati di immagine da visualizzare (e mostrerà invece il testo alt/il bordo), questo si applica. – Ktash

0

Non è necessario attendere esplicitamente il caricamento tramite CSS. Puoi farlo anche in javascript.

var img = document.getElementById("some-image"); 
    img.style.display = "none"; 
    //... 
    //add to dom etc... 
    //.. 
    img.onload = function() { 
     img.loaded = true; 
     img.style.display = "inherit"; 
    } 
Problemi correlati