2015-05-05 9 views
9

ein ansprechendes Fluid grid und Bilder verwenden 800px x 500pxWie wird ein Bildplatzhalter verwendet, während Bilder in einem ansprechenden Raster geladen werden?

Problem: Wenn Bilder zu laden, die Fußzeile, wie es oben und nach unten gedrückt wird, während die Bilder im Laden sind

Setup:. Unter Verwendung eines div für die Bilder und div für die Fußzeile.

Ziel: Die Fußzeile soll immer in der richtigen Position bleiben und nicht versuchen, sie an einen absoluten Punkt zu bringen, sondern nur, um den Abstand der Bilder zu berücksichtigen.

Ideen: Vielleicht ein transparentes PNG bei 800x500 verwenden, so dass es zuerst vor den Bildern lädt.

Bedenken: ein div Platzhalter bei 800x500 Erstellen arbeiten möglicherweise nicht wie diese Bilder in einem Fluid Grid reagieren, so werden sie nie in dieser Größe tatsächlich, es sei denn der Betrachter einen großen Bildschirm hat ..

Endergebnis wenn Bilder geladen: 01

Aktuelle Ausgabe: 02

Tor für Bilder zu laden: 03

+1

Sie könnten ein transparentes Bild erstellen CSS für Ladezwecke, dann ersetzen Sie die transparenten Bildreferenzen in den 'onLoad' Callbacks ... – abiessu

+0

Danke @abiessu Könntest du mir in die richtige Richtung zeigen, wie ich das ausführen soll? – wozmatic

+0

http://Stackoverflow.com/a/24663598/2592931 ist eine Antwort, die ich zusammensetze und über eine grundlegende Methode zum Erstellen eines Bildes in CSS spreche. Ich bin mir sicher, dass es einen Weg gibt, auch einen transparent zu machen. – abiessu

Antwort

8

Wenn ich das Seitenverhältnis für etwas wissen, wird die gleiche, egal, was die Breite der Elemente/Bildschirm bleiben, ich tue etwas wie folgt aus:

.image-holder { 
    display: inline-block; 
    width: 33.333%; 
    position: relative; 
} 
.image-holder:before { 
    content:""; 
    display: block; 
    padding-top: 62.5%; 
} 
.image-holder img { 
    position: absolute; 
    top: 0; 
    left: 0; 
    width: 100%; 
    height: 100%; 
} 

Hier ist eine vollständige Demo: http://jsfiddle.net/serv0m8o/1/

ich jedes Bild in einem div mit einer Klasse von image-holder wickeln (die Sie gestylt das 3 pro Zeile Muster zu geben, die Sie veranschaulicht) und stellen Sie sicher, es ist position: relative;

Ich style dann das :before Pseudo-Element von diesem div, um die richtige Höhe des Seitenverhältnisses zu sein, das benötigt wird. Padding in CSS ist eine intrinsische Eigenschaft, dh es basiert auf der Breite des Elements, sodass Sie einen Prozentsatz zuweisen können, der das Verhältnis widerspiegelt. Sie 800x500 Bilder angegeben, so (500/800*100) = 62.5% wie mein padding-top

Dann können Sie absolut Ihr Bild positionieren die volle Breite und Höhe des Behälters zu füllen (das ist, warum wir es gesetzt position: relative; zu sein)

Auf diese Mittel dass das div Element die Größe ist, die das Bild sein wird, ob das Bild in es geladen wird oder nicht (das Bild selbst hat keinen Einfluss auf die Containergröße, da es absolut positioniert ist)

+0

Danke, das ist wirklich cool Blake. Allerdings gibt es ein paar Probleme damit.Es zeigt defekte Bildsymbole, während die Bilder geladen werden (ich benutze FF). Zweitens, es ist meine Schuld, wenn ich nicht erwähne, dass ich Breakpoints habe, in denen meine Bilder von 4 auf 3 bis 2 Breite fallen. Es ist also nicht 3 unendlich lang notwendig. Gedanken? – wozmatic

+0

Hallo, ich habe ein 'img'-Element verwendet, nur um Ihrem Beispiel zu entsprechen, aber ich habe keine gültige Bildquelle angegeben, deshalb sehen Sie das. Wenn Sie es real umsetzen, wird das nicht der Fall sein. In Bezug auf Haltepunkte, style einfach den Container 'div' so, wie du es für deine Bilder tun würdest, das Seitenverhältnis bleibt immer korrekt, egal welche Breite du als' div' eingibst. –

+0

Ja, sicher. Ich habe diesen Code mit den richtigen Bildverknüpfungen ausprobiert, sehe ihn aber immer noch. Vielleicht war es nur mein Browser? – wozmatic

Verwandte Themen