Fade-in Bildern, nachdem Sie geladen haben
Fand ich diesen code, um die gewünschte Wirkung erzielen und versuchte es auf JSFiddle
http://jsfiddle.net/AndyMP/7F9tY/366/
Scheint es zu funktionieren, dass es verblasst das Bild, nachdem es geladen wurde. Dann versuchte ich es in eine Webseite und es hat nicht die gleiche Weise funktionieren, laden Sie zuerst das Bild anstatt zu verblassen in. Obwohl es manchmal schien, wie es war, verblasste in der gleichen Zeit geladen.
Gibt es eine zuverlässige Möglichkeit, dies zu erreichen, vorzugsweise durch änderung dieser code, wenn möglich?
$("#image").ready(function(){
$("#preload").fadeIn(1000);
});
Du musst angemeldet sein, um einen Kommentar abzugeben.
Die einzige zuverlässige Weg, um
fadeIn()
ein Bild, das in Ihrem eigentlichen HTML-markup zu setzen, ist eineonload
- handler in der HTML-markup wie dieses:Arbeiten demo hier: http://jsfiddle.net/jfriend00/X82zY/
Tun, ist auf diese Weise brauchen Sie nicht zu geben Sie jedem Bild eine id oder Klasse. Setzen Sie einfach den Stil und die event-handler im markup.
Dem Grund, die Sie haben, um die event-handler im markup ist, dass, wenn Sie warten, bis Ihre Seite das javascript ausgeführt wird, kann es zu spät sein. Kann das Bild bereits geladen sein (vor allem wenn es im browser-cache) und damit Sie verpasst haben, die
onload
Veranstaltung. Wenn Sie den handler in der HTML-markup, werden Sie nicht verpassen dieonload
Ereignis, weil der handler zugeordnet ist, bevor das Bild beginnt zu laden.Wenn Sie nicht möchten, um event-Handler in javascript, dann können Sie so etwas tun, wo Sie einen Platzhalter für das Bild in der eigentlichen HTML-und Sie verwenden Sie javascript zum erstellen der eigentlichen image-tags und fügen Sie Sie, und ziehen Sie die Bild-URL aus dem Platzhalter:
Arbeiten demo: http://jsfiddle.net/jfriend00/BNFqM/
Ersten option erhalten Sie Ihre Bilder geladen, ein wenig schneller (weil das laden der Bilder beginnt sofort nach Seite Parsen), aber die zweite option gibt Ihnen mehr programmatische Kontrolle über den Prozess.
$(document).ready()
Funktion. Ich bin froh, dass option 2 für Sie arbeitet, aber option 1 könnte auch, wenn Sie möchten, um herauszufinden, warum etwas anderes nicht funktioniert.display: none
. Soweit die such-engine weiß, es gibt nicht einmal ein Bild gibt. Wenn Sie möchten, dass die Suchmaschine, um zu sehen, Ihre Bilder, dann sollten Sie im raw-HTML addiert, sondern via JS. Aber, die Bilder in der Regel nicht viel spielen eine Rolle in Ihrem SEO sowieso, da deren Inhalt kaum zu erkennen, andere alsalt
undtitle
- tags.this.style.display = "inline";
html
javascript
.ready() nicht ausgelöst die Art, wie Sie denken, es tut, sehen die 'load' jQuery event-handler
Vielleicht interessant für Leute, die finden diese Frage und verwenden angular.js:
Ich geschrieben habe, eine kleine Richtlinie, die nicht den job ganz gut.
JS:
HTML:
Durch Einstellung
src
nicht in HTML, sondern in die Richtlinie code das problem erwähnt jfriend00 (handler angefügt ist nach deronload
ausgelöst wird) gelöst ist.Reine java-script und CSS-Lösung:
Mithilfe der übergänge-Effekt mit opactiy.
JS:
HTML:
fadeIn
sollte aufgerufen werden, nachdem das Bild geladen wurde. Hier ist ein Beispiel:http://jsfiddle.net/mYYym/
Hier ist eine css-transition und die javascript-Lösung auf Basis von @jfriend00 Antwort und ähnlich dem Ansatz von @Robbendebiene:
onload="this.style.opacity=1"
CSS:
HTML: