3 Stimmen

jQuery Bildschieber lädt alle Bilder auf einmal

Ich habe ein jQuery Bild Schieberegler auf der Kopfzeile meiner Website, die Bilder in regelmäßigen Abständen in einer automatisierten Schiebebewegung zeigt. Nun ist das Problem, wenn Sie die Seite zum 1. Mal laden (nichts ist zwischengespeichert), es lädt alle Bilder in den Schieberegler auf einmal und es richtet die Bilder ein auf dem anderen auf der Webseite (ein div über einem anderen), so dass Sie alle Bilder auf einmal sehen, sobald die Seite lädt. Das sieht nicht sehr professionell aus. Gibt es vielleicht eine onpageload()-Funktion, die verhindern kann, dass alle Bilder auf einmal angezeigt werden, oder die sie zuerst im Hintergrund laden kann, bevor sie angezeigt werden? Dies ist vor allem ein Problem bei niedrigeren Internetgeschwindigkeiten...Meine Website: http://v4m.mobi

Ich danke Ihnen!

6voto

HellaMad Punkte 5191

Geben Sie Ihren Bildern einen Stil von display:none oder visibility:hidden und ändern dann ihren Stil wieder in display:[block/inline/etc] oder visibility:visible auf $(window).load() .

$(window).load(function(){
    $('#myImage1').css('visibility','visible');
    $('#myImage2').css('visibility','visible');
    //etc
});

0 Stimmen

Hallo DC_. Vielen Dank für deine Antwort, aber ich würde gerne wissen, wie genau ich die Sichtbarkeit:sichtbar auf die Bilder mit der Funktion document.ready() anwenden kann? Da die Bilder in der html vor dem Javascript geladen werden

0 Stimmen

$(window).load, wie von dem anderen Antwortenden vorgeschlagen, ist dafür wahrscheinlich besser geeignet. Ich habe meine Antwort mit etwas Beispielcode bearbeitet.

0 Stimmen

Hey @DC_ dein Code hat funktioniert! Ich würde gerne noch eine Sache hinzufügen. Wenn wir viele Bilder haben, können wir, anstatt die Sichtbarkeit jedes Bildes zu ändern, die Sichtbarkeit des übergeordneten div/ul/container der Bilder selbst ändern.

0voto

j08691 Punkte 197539

Laden Sie Ihre Bilder vor oder verwenden Sie jQuery und laden Sie Ihren Code mit window.load().

$(window).load(function(){  
// runs after images are loaded  
});

0 Stimmen

Danke für Ihre Antwort, ich nehme an, Ihre Methode oben verwendet Ajax?

0 Stimmen

Ich habe die Funktion $(window).load(function(){ }); ausprobiert, aber sie lädt immer noch die Bilder als erstes. Es lädt zuerst die html-Tabelle mit den Bildern und dann jquery und css. Ich habe auch folgendes versucht( perishablepress.com/press/2009/12/28/ ), aber keine wirkliche Hilfe, insbesondere bei langsamen Internetgeschwindigkeiten.

0 Stimmen

Ich habe mir Ihre Website angesehen, aber ich sehe nicht, dass Sie etwas mit window.load laden. Außerdem haben Sie ein Stück Code auf halber Strecke der Seite, die in einem Head-Tag endet: <script type="text/javascript"> $(function() { $('.quickFlip').quickFlip(); }); </script> </head> . Ihr window.load (und sogar document.ready) sollte sich im Kopf der Seite befinden.

0voto

martinedwards Punkte 5127

Könnten Sie nicht einfach tun:

.slideshow img {
    display: none;
}

.slideshow img:first-child {
    display: block;
}

Je nach Browser werden sie vielleicht nicht alle auf einmal geladen, aber zumindest wird nur eine sichtbar sein. Außerdem haben Sie die Möglichkeit, das erste Bild als Fallback ohne JavaScript zu verwenden.

Wenn Sie die Unterstützung älterer Browser benötigen, erstellen Sie eine Art "visible"-Klasse und fügen Sie sie dem ersten Bildelement hinzu.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X