แก้ไขด่วน:
หากต้องการลบช่องว่างใต้ภาพคุณสามารถ:
- ตั้งค่าคุณสมบัติการจัดตำแหน่งแนวตั้งของรูปภาพเป็น
vertical-align: bottom;
vertical-align: top;
หรือvertical-align: middle;
- ตั้งค่าคุณสมบัติการแสดงผลของภาพเป็น
display:block;
ดูรหัสต่อไปนี้สำหรับการสาธิตสด:
#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>
คำอธิบาย: ทำไมจึงมีช่องว่างใต้ภาพ?
ช่องว่างหรือพื้นที่เพิ่มเติมใต้ภาพไม่ใช่ข้อบกพร่องหรือปัญหา แต่เป็นพฤติกรรมเริ่มต้น สาเหตุหลักคือรูปภาพถูกแทนที่องค์ประกอบ ( ดูMDN แทนที่องค์ประกอบ ) สิ่งนี้ช่วยให้พวกเขา "ทำตัวเหมือนภาพ" และมีมิติที่แท้จริงอัตราส่วนภาพ ...
เบราว์เซอร์คำนวณคุณสมบัติการแสดงผลของพวกเขาinline
แต่พวกเขาให้พวกเขามีพฤติกรรมพิเศษซึ่งทำให้พวกเขาเข้าใกล้inline-block
องค์ประกอบมากขึ้น พวกเขามีความสูงขอบบน / ล่างและแพ็ดดิ้งแปลง ... )
นี่ก็หมายความว่า:
<img>
ไม่มีพื้นฐานดังนั้นเมื่อมีการใช้รูปภาพในบริบทการจัดรูปแบบอินไลน์โดยมีการจัดเรียงแนวตั้ง: พื้นฐานบรรทัดล่างของรูปภาพจะถูกวางไว้บนพื้นฐานข้อความ
(ที่มา: MDN , เหมืองที่เน้น )
ในฐานะที่เป็นเบราว์เซอร์โดยค่าเริ่มต้นคำนวณคุณสมบัติจัดแนวตั้งเพื่อพื้นฐานนี้เป็นพฤติกรรมเริ่มต้น ภาพต่อไปนี้แสดงตำแหน่งที่ฐานตั้งอยู่บนข้อความ:
( แหล่งรูปภาพ )
องค์ประกอบที่มีการจัดแนวพื้นฐานจำเป็นต้องรักษาพื้นที่สำหรับตัวลดทอนที่ขยายต่ำกว่าเส้นฐาน (เช่นj, p, g ...
) อย่างที่คุณเห็นในภาพด้านบน ในการกำหนดค่านี้ด้านล่างของภาพจะถูกจัดตำแหน่งบนพื้นฐานที่คุณเห็นในตัวอย่างนี้:
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>
นี่คือสาเหตุที่พฤติกรรมเริ่มต้นของ<img>
แท็กสร้างช่องว่างที่ด้านล่างของคอนเทนเนอร์และทำไมการเปลี่ยนคุณสมบัติการจัดตำแหน่งแนวตั้งหรือคุณสมบัติการแสดงผลลบออกดังที่แสดงในตัวอย่างต่อไปนี้:
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>