CSS 解決img底部空白間隙

前言

img一直以來(lái)有一個(gè)很大的問(wèn)題就是底部空白間隙,一直以為是img默認(rèn)樣式造成的,后來(lái)查了相關(guān)的資料,才弄清楚為什么會(huì)產(chǎn)生這樣的結(jié)果。

首先仔細(xì)看下圖中的邊框與img的間隙。


img間隙

用過(guò)ps文字工具的同學(xué)頭知道,在使用文本工具中會(huì)出現(xiàn)如下的現(xiàn)象,字母或者漢字會(huì)超出那條基線。


PS文字工具

而在CSS中也有那條線,而且inline默認(rèn)的垂直對(duì)齊方式vertical-align默認(rèn)值是baseline(基線對(duì)齊),也是以x字母的下方為基準(zhǔn)。(在平面設(shè)計(jì)中,字體設(shè)計(jì)也同樣基于這樣的一個(gè)原則,x的下方為基線)

基線問(wèn)題

觀察上方的代碼,字體的大小直接影響著超出基線間隙,所以字體大小可以影響基線間隙。
同時(shí)行內(nèi)本身的line-height是會(huì)移動(dòng)基線的(文字垂直居中可以通過(guò)line-height實(shí)現(xiàn))。所以行高也是可以影響基線的位置。

解決方案

知道底部間隙的原因是因?yàn)樾袃?nèi)元素默認(rèn)的垂直對(duì)齊方式為baseline造成的字體下方會(huì)有間隙,所以解決起來(lái)就挺好辦了。一切的原因都是inline行內(nèi)屬性在作怪,只要對(duì)癥下藥即可。

目前有4種非常簡(jiǎn)單的解決方案。

第一種方法:修改img行內(nèi)元素的垂直居中方式,讓它不在以基線對(duì)齊。

img {
    vertical-align: bottom;
}

效果如下:

最終效果

第二種方法:修改行高,使行高變小,這樣基線下方的位置基本可以忽略。

div {
    line-height: 0px;
}

效果如下:

最終效果

第三種方法:修改img行內(nèi)元素的字體大小,基線的下方間隙是部分字體超過(guò)基線下方而產(chǎn)生的,如果把父元素的font-size變的超小,基線的下方距離將忽略不計(jì)。

div {
    font-size: 0px;
}

效果如下:


最終效果

如果把字體改的非常大,那么間隙又會(huì)出現(xiàn)。

div {
    font-size: 80px;
}

效果如下:


最終效果

第四種方法:直接讓img變成塊級(jí)元素,不在受行內(nèi)基線的影響。

img {
    display: block;
}

/* 浮動(dòng)也可以讓元素變成塊級(jí) */
img {
    float:left;
}

/* 只要能變成塊級(jí)的屬性都可以 */
...

效果如下:

最終效果

結(jié)語(yǔ)

在深入研究img間隙原因之前,我一直使用的是display: block來(lái)控制間隙,在深入學(xué)習(xí)之后,才發(fā)現(xiàn)有這么多方式可以解決,懂得原理很重要。所以學(xué)習(xí)一定要知其所以然。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 問(wèn)答題47 /72 常見(jiàn)瀏覽器兼容性問(wèn)題與解決方案? 參考答案 (1)瀏覽器兼容問(wèn)題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 14,192評(píng)論 1 92
  • 基本框 CSS假定每個(gè)元素都會(huì)生成一個(gè)或多個(gè)矩形框,這稱為元素框。各元素框中心有一個(gè)內(nèi)容區(qū)(content are...
    exialym閱讀 1,000評(píng)論 0 2
  • 有些東西我們經(jīng)常用,但是我們卻并不了解它的原理,所以一旦換了場(chǎng)景,好多東西就不知道該怎么用了。最近一直很糾結(jié)ver...
    朱小維閱讀 5,237評(píng)論 8 34
  • H5移動(dòng)端知識(shí)點(diǎn)總結(jié) 閱讀目錄 移動(dòng)開(kāi)發(fā)基本知識(shí)點(diǎn) calc基本用法 box-sizing的理解及使用 理解dis...
    Mx勇閱讀 4,834評(píng)論 0 26
  • 移動(dòng)開(kāi)發(fā)基本知識(shí)點(diǎn) 一.使用rem作為單位 html { font-size: 100px; } @media(m...
    橫沖直撞666閱讀 3,743評(píng)論 0 6

友情鏈接更多精彩內(nèi)容