Perbaikan cepat:
Untuk menghapus celah di bawah gambar , Anda dapat:
- Setel properti penyejajaran vertikal gambar ke
vertical-align: bottom;
vertical-align: top;
atauvertical-align: middle;
- Setel properti tampilan gambar ke
display:block;
Lihat kode berikut untuk demo langsung:
#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>
Penjelasan: mengapa ada celah di bawah gambar?
Kesenjangan atau ruang ekstra di bawah gambar bukanlah bug atau masalah, itu adalah perilaku default. Penyebab utamanya adalah bahwa gambar adalah elemen yang diganti ( lihat elemen yang diganti MDN ). Ini memungkinkan mereka untuk "bertindak seperti gambar" dan memiliki dimensi intrinsik mereka sendiri, rasio aspek ....
Browser menghitung properti tampilan mereka, inline
tetapi mereka memberi mereka perilaku khusus yang membuatnya lebih dekat ke inline-block
elemen (karena Anda dapat meluruskannya secara vertikal, memberikan mereka tinggi, margin atas / bawah dan bantalan, mengubah ...).
Ini juga berarti bahwa:
<img>
tidak memiliki garis dasar, jadi ketika gambar digunakan dalam konteks pemformatan sebaris dengan garis lurus vertikal: garis dasar, bagian bawah gambar akan ditempatkan pada garis dasar teks.
( sumber: MDN , penekanan tambang )
Karena browser secara default menghitung properti penyelarasan vertikal ke baseline, ini adalah perilaku default. Gambar berikut menunjukkan di mana garis dasar berada pada teks:
( Sumber gambar )
Elemen garis dasar perlu menjaga ruang untuk keturunan yang meluas di bawah garis dasar (seperti j, p, g ...
) seperti yang Anda lihat pada gambar di atas. Dalam konfigurasi ini, bagian bawah gambar sejajar pada garis dasar seperti yang Anda lihat dalam contoh ini:
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>
Inilah sebabnya mengapa perilaku default <img>
tag menciptakan celah di bagian bawah wadahnya dan mengapa mengubah properti perataan vertikal atau properti tampilan menghapusnya seperti dalam demo berikut:
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>