Ursprüngliche Antwort:
Wenn Sie sich für CSS3 entscheiden möchten, können Sie die Eigenschaft css3 translate verwenden. Ändern Sie die Größe basierend auf dem, was größer ist. Wenn Ihre Höhe größer und die Breite kleiner als der Behälter ist, wird die Breite auf 100% gedehnt und die Höhe von beiden Seiten abgeschnitten. Gleiches gilt auch für größere Breiten.
Ihr Bedarf, HTML:
<div class="img-wrap">
<img src="http://lorempixel.com/300/160/nature/" />
</div>
<div class="img-wrap">
<img src="http://lorempixel.com/300/200/nature/" />
</div>
<div class="img-wrap">
<img src="http://lorempixel.com/200/300/nature/" />
</div>
Und CSS:
.img-wrap {
width: 200px;
height: 150px;
position: relative;
display: inline-block;
overflow: hidden;
margin: 0;
}
div > img {
display: block;
position: absolute;
top: 50%;
left: 50%;
min-height: 100%;
min-width: 100%;
transform: translate(-50%, -50%);
}
Voila! Arbeiten: http://jsfiddle.net/shekhardesigner/aYrhG/
Erläuterung
DIV ist auf die relative
Position eingestellt. Dies bedeutet, dass alle untergeordneten Elemente die Startkoordinaten (Ursprünge) erhalten, von denen aus dieser DIV beginnt.
Das Bild wird als BLOCK-Element festgelegt. min-width/height
Beide Werte auf 100% bedeuten, dass die Größe des Bilds unabhängig von seiner Größe auf mindestens 100% des übergeordneten Elements geändert wird . min
ist der Schlüssel. Wenn die Bildhöhe um die Mindesthöhe die Höhe des Elternteils überschreitet, ist dies kein Problem. Es wird nach einer Mindestbreite gesucht und versucht, die Mindestgröße auf 100% der Eltern festzulegen. Beides geht umgekehrt. Dies stellt sicher, dass es keine Lücken um das Div gibt, aber das Bild ist immer etwas größer und wird durchgeschnittenoverflow:hidden;
Nun image
wird diese auf eine Set - absolute
Position mit left:50%
und top:50%
. Schieben Sie das Bild um 50% von oben nach links, um sicherzustellen, dass der Ursprung von DIV stammt. Linke / obere Einheiten werden vom Elternteil gemessen.
Magischer Moment:
transform: translate(-50%, -50%);
Diese translate
Funktion der CSS3- transform
Eigenschaft verschiebt / positioniert ein fragliches Element neu. Diese Eigenschaft behandelt das angewendete Element, daher bedeutet der Wert (x, y) ODER (-50%, -50%), dass das Bildnegativ um 50% der Bildgröße nach links und um 50% der Bildgröße nach oben verschoben wird .
Z.B. Wenn die Bildgröße 200px × 150px war, transform:translate(-50%, -50%)
wird die Übersetzung berechnet (-100px, -75px). % unit hilft, wenn wir verschiedene Bildgrößen haben.
Dies ist nur eine schwierige Methode, um den Schwerpunkt des Bildes und des übergeordneten DIV zu ermitteln und abzugleichen.
Entschuldigung, dass Sie zu lange gebraucht haben, um es zu erklären!
Ressourcen, um mehr zu lesen:
background-size: cover;
?