Die folgenden Lösungen ermöglichen die Vergrößerung und Verkleinerung des Bildes abhängig von der Breite der übergeordneten Box.
Alle Bilder haben einen übergeordneten Container mit einer festen Breite nur zu Demonstrationszwecken . In der Produktion wird dies die Breite des übergeordneten Rahmens sein.
Best Practice (2018):
Bei dieser Lösung wird der Browser angewiesen, das Bild mit der maximal verfügbaren Breite zu rendern und die Höhe als Prozentsatz dieser Breite anzupassen.
.parent {
width: 100px;
}
img {
display: block;
width: 100%;
height: auto;
}
<p>This image is originally 400x400 pixels, but should get resized by the CSS:</p>
<div class="parent">
<img width="400" height="400" src="https://place-hold.it/400x400">
</div>
Ausgefallenere Lösung:
Mit der raffinierteren Lösung können Sie das Bild unabhängig von seiner Größe zuschneiden und eine Hintergrundfarbe hinzufügen, um den Beschnitt auszugleichen.
.parent {
width: 100px;
}
.container {
display: block;
width: 100%;
height: auto;
position: relative;
overflow: hidden;
padding: 34.37% 0 0 0; /* 34.37% = 100 / (w / h) = 100 / (640 / 220) */
}
.container img {
display: block;
max-width: 100%;
max-height: 100%;
position: absolute;
top: 0;
bottom: 0;
left: 0;
right: 0;
}
<p>This image is originally 640x220, but should get resized by the CSS:</p>
<div class="parent">
<div class="container">
<img width="640" height="220" src="https://place-hold.it/640x220">
</div>
</div>
Für die Zeile, in der die Auffüllung angegeben wird, müssen Sie beispielsweise das Seitenverhältnis des Bildes berechnen:
640px (w) = 100%
220px (h) = ?
640/220 = 2.909
100/2.909 = 34.37%
Obere Polsterung = 34,37 %.