HTML img 下方有不明空隙?!

HTML img 下方有不明空隙?!

之前在回覆問題時,不少人都會發現這個有點奇怪的現象 - 圖片下方有一個莫名的間距
這一篇就來說明一下原理以及解決方法吧!

如下面 codepen 範例中,圖片下方會有一個空隙:

原因說明

因為圖片預設是 inline 元素,而 inline 元素的 vertical-align 設定預設是和父元素的 baseline 對齊的,而 baseline 本身又和父元素底邊有一定的間距。這個間距是來自於英文文字中像是 j, y 這些超過基準線的字符。

vertical-align 基準線示意圖

圖片來自 overstackflow 回覆

解法

了解原因之後也就可以明白,要去除掉下方的空隙可以使用以下三種方法:

  • 解法一:
    1
    2
    3
    img { 
    vertical-align: top/bottom/text-top/text-bottom;
    }

解法一是可以將 vertical-align 的設定修改為 top/bottom/text-top/text-bottom 改變與父元素的對齊基準。

  • 解法二:
    1
    2
    3
    img { 
    display: block;
    }

解法二的用意是將 img 改為區塊元素,讓圖片不會因為行內(inline)元素的特性而受到影響。

  • 解法三
    1
    2
    3
    .box {
    font-size: 0px;
    }

.box 是指 img 的父元素,解法三的方式是讓文字大小為 0px,進而讓因為文字而有的間距不見。

評論

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×