Schnelle Lösung:
Um die Lücke unter dem Bild zu entfernen , können Sie:
- Stellen Sie die vertikale Ausrichtungseigenschaft des Bildes auf
vertical-align: bottom;
vertical-align: top;
oder einvertical-align: middle;
- Setzen Sie die Anzeigeeigenschaft des Bildes auf
display:block;
Eine Live-Demo finden Sie im folgenden Code:
#vAlign img {
vertical-align :bottom;
}
#block img{
display:block;
}
div {border: 1px solid red;width:100px;}
img {width:100px;}
<p>No fix:</p>
<div><img src="http://i.imgur.com/RECDV24.jpg" /></div>
<p>With vertical-align:bottom; on image:</p>
<div id="vAlign"><img src="http://i.imgur.com/RECDV24.jpg" /></div>
<p>With display:block; on image:</p>
<div id="block"><img src="http://i.imgur.com/RECDV24.jpg" /></div>
Erklärung: Warum gibt es eine Lücke unter dem Bild?
Die Lücke oder der zusätzliche Platz unter dem Bild ist kein Fehler oder Problem, sondern das Standardverhalten. Die Hauptursache ist, dass Bilder ersetzte Elemente sind ( siehe MDN ersetzte Elemente ). Dies ermöglicht es ihnen, "sich wie ein Bild zu verhalten " und ihre eigenen intrinsischen Dimensionen und ihr eigenes Seitenverhältnis zu haben.
Browser berechnen ihre Anzeigeeigenschaften, inline
geben ihnen jedoch ein spezielles Verhalten, das sie näher an inline-block
Elementen heranführt (da Sie sie vertikal ausrichten können, geben ihnen eine Höhe, oberer / unterer Rand und Polsterung, transformiert ...).
Dies bedeutet auch, dass:
<img>
hat keine Grundlinie. Wenn Bilder in einem Inline-Formatierungskontext mit vertikaler Ausrichtung verwendet werden: Grundlinie, wird der untere Rand des Bildes auf der Textgrundlinie platziert.
( Quelle: MDN , Schwerpunkt Mine )
Da Browser standardmäßig die vertikale Ausrichtungseigenschaft an der Grundlinie berechnen, ist dies das Standardverhalten. Das folgende Bild zeigt, wo sich die Grundlinie im Text befindet:
( Bildquelle )
An der Grundlinie ausgerichtete Elemente müssen Platz für die Abseilgeräte halten , die sich unterhalb der Grundlinie erstrecken (wie j, p, g ...
im obigen Bild). In dieser Konfiguration ist der untere Rand des Bildes an der Grundlinie ausgerichtet, wie Sie in diesem Beispiel sehen können:
div{border:1px solid red;font-size:30px;}
img{width:100px;height:auto;}
<div>
<img src="http://i.imgur.com/RECDV24.jpg" />jpq are letters with descender
</div>
Aus diesem Grund wird durch das Standardverhalten des <img>
Tags eine Lücke am unteren Rand des Containers erstellt, und durch Ändern der vertikalen Ausrichtungseigenschaft oder der Anzeigeeigenschaft wird diese wie in der folgenden Demo entfernt:
div {width: 100px;border: 1px solid red;}
img {width: 100px;height: auto;}
.block img{
display:block;
}
.bottom img{
vertical-align:bottom;
}
<p>Default:</p>
<div>
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>
<p>With display:block;</p>
<div class="block">
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>
<p>With vertical-align:bottom;</p>
<div class="bottom">
<img src="http://i.imgur.com/RECDV24.jpg" />
</div>