Dies ist kein Duplikat, ich habe bereits die anderen Fragen zum Laden von über 1.000 Bildern auf einer Seite gelesen und die Vorschläge übernommen. Diese Frage bezieht sich mehr auf den Umgang mit den über 1.000 Bildern.Laden von 1000 Bildern auf einer Seite
Ich habe die Lazy Loading angewendet und die Größe der Fotos auf jeweils 500k reduziert. Auch im Lazy Loading im mit einem 1px Daten-URI, um die Anfragen so leicht wie möglich zu machen.
Allerdings kann man kaum nach unten scrollen, es ist sehr lückig und es fühlt sich an wie auf einem Windows XP SP2 versucht COD zu spielen.
Im PHP-Snippet ich dir bin scannen und alle Bilder bekommen und mit ihnen ein Feld zurückgibt:
function returnPhotos($path){
$files = scandir($path);
$files = array_diff(scandir($path), array('video', '.', '..'));
$filesInArray = count($files);
return $files;
}
Here I Schleife durch das Array und zeigen die Bilder
<div class="col-md-12" style="text-align:center;">
<?php
foreach($photoArray as $photo){
echo "
<div style='display:inline-block;position:relative;'>
<label for='img".$counter."'>
<img src='data:
image/gif;base64,R0lGODdhAQABAPAAAMPDwwAAACwAAAAAAQABAAACAkQBADs=' data-src='".$path."".$photo."' style='max-height:250px;padding:2px;max-width:370px;min-width:184px;'>
</label><br/>
";
?>
</div>
Und hier ist die jquery verzögertes Laden-Bibliothek, die ich
/**
* jQuery Unveil
* A very lightweight jQuery plugin to lazy load images
* http://luis-almeida.github.com/unveil
*
* Licensed under the MIT license.
* Copyright 2013 Luís Almeida
* https://github.com/luis-almeida
*/
;(function($) {
$.fn.unveil = function(threshold, callback) {
var $w = $(window),
th = threshold || 0,
retina = window.devicePixelRatio > 1,
attrib = retina? "data-src-retina" : "data-src",
images = this,
loaded;
this.one("unveil", function() {
var source = this.getAttribute(attrib);
source = source || this.getAttribute("data-src");
if (source) {
this.setAttribute("src", source);
if (typeof callback === "function") callback.call(this);
}
});
function unveil() {
var inview = images.filter(function() {
var $e = $(this);
if ($e.is(":hidden")) return;
var wt = $w.scrollTop(),
wb = wt + $w.height(),
et = $e.offset().top,
eb = et + $e.height();
return eb >= wt - th && et <= wb + th;
});
loaded = inview.trigger("unveil");
images = images.not(loaded);
}
$w.on("scroll.unveil resize.unveil lookup.unveil", unveil);
unveil();
return this;
};
})(window.jQuery || window.Zepto);
ich eine Website gefunden bin mit wo es macht die gleichen, aber es funktioniert ziemlich gut, hier: https://www.youtube.com/watch?v=c0c7aUh33ug
aber ich arbeitet schrecklich, hier: https://www.youtube.com/watch?v=jRuwzAzaShU
Was kann ich ändern, um besser zu machen, laden/Arbeit?
jedes Foto ist 500 Kilobyte? –
Solltest du sagen, dass du andere Websites benutzt hast, die 500 Megabyte Fotos laden und es schaffen, in der Interaktion reibungslos zu bleiben? – enhzflep
@ SebastiánEspinosa ja, jedes Foto ist ungefähr 500kb, mehr oder weniger. Ich habe gesagt, dass ich einen Fotogalerie-Service gefunden habe, mit dem Sie so viele Fotos hochladen können wie Sie wollen (sogar über 2.000) und sie alle auf einer Seite laden und wie im Youtube-Video gezeigt, funktioniert es ziemlich gut – mrwhite