Lassen Sie Bilder schrumpfen, aber nicht dehnen

8

Ich habe eine Seite mit 4.000+ Seiten und 10 oder mehr JPEG-Bildern pro Seite in verschiedenen Größen. Ich versuche, die Seite mobiler zu machen. Zu diesem Zweck möchte ich es ermöglichen, dass die Bilder auf kleinere Bildschirme schrumpfen. Ich weiß, dass ich etwas tun kann, um zu signalisieren, dass die Bilder schrumpfen können:

%Vor%

Aber was, wenn nicht alle Bilder eine Breite von 357 (oder was auch immer) haben, und ich möchte nicht, dass kleinere Bilder über ihre wahren Dimensionen hinaus gestreckt werden? Und nur um die Dinge noch lustiger zu machen, was ist, wenn die Bilder-Tags keine Attribute für Höhe und Breite haben?

Mein Ziel ist es, eine Lösung zu finden, bei der ich nicht zehntausende von Bildaufrufen manuell anpassen muss, aber ich kann suchen und ersetzen. Bilder sind derzeit in einen Div-Container eingeschlossen und haben eine Klasse wie folgt:

%Vor%

Ich bin auch offen für die Möglichkeit, dass ich das völlig falsch mache.

    
fnord12 23.04.2015, 18:24
quelle

4 Antworten

7

max-width ist einfach, effektiv und benötigt kein JavaScript .

Das unten stehende CSS erstellt reaktionsfähige Bilder, die so verkleinert werden, dass sie der Breite des Containers entsprechen, aber nicht über ihre nativen Größen hinaus expandieren.

%Vor%

In der folgenden Demonstration sind beide Bilder 300 x 75 Pixel groß. Der erste Container ist 200 Pixel breit und der zweite ist 400 Pixel breit. Beachten Sie, dass das erste Bild verkleinert wird, um in den Container zu passen, das zweite Bild jedoch nicht über seine ursprüngliche Größe hinaus erweitert wird. Beachten Sie auch, dass die Proportionen jedes Bildes genau bleiben.

%Vor% %Vor%

Zusätzliche Hinweise

  1. Ich habe display:block eingefügt, um den Abseilraum zu entfernen unter dem Bild.
  2. Wenn Ihre Bilder bestimmte Attribute für Höhe und Breite haben (wie sie wohl sollte ), können Sie height:auto und / oder width:auto hinzufügen, um diese Attribute zu überschreiben.
  3. Bootstrap verwendet diese Methode für reaktionsfähige Bilder.
showdev 23.04.2015, 18:30
quelle
1

Sie können ein wenig jQuery verwenden, um die native Breite jedes Bildes herauszufinden , und setze für jedes Bild danach maximale Maximalbreiten:

%Vor%

UPDATE: Wenn Sie möchten, dass jedes Bild eine einheitliche Breite hat, können Sie die kleinste maximale Breite speichern und auf alle Bilder anwenden:

%Vor%     
JLF 23.04.2015 18:34
quelle
0

Verwenden Sie max-width:100% and height: auto in Ihrem CSS. Wenn Sie Ihre Website mobilfreundlich machen möchten, würde ich vorschlagen, in das Bootstrap-Framework für mehr Flexibilität zu schauen.

    
Kyle Darin 23.04.2015 19:29
quelle
0

Warum nicht einfach:

%Vor%     
Steve 23.04.2015 19:21
quelle

Tags und Links