頁(yè)面排版的時(shí)候經(jīng)常會(huì)遇到li包含img時(shí),圖片文件的下邊緣出現(xiàn)大概5個(gè)或10個(gè)像素的間隙,出現(xiàn)間隙大概是以下原因:
圖片文字等inline元素默認(rèn)是和父級(jí)元素的baseline對(duì)齊的,而baseline又和父級(jí)底邊有一定距離(這個(gè)距離和 font-size,font-family 相關(guān),不一定是 5px),所以設(shè)置 vertical-align:top/bottom/text-top/text-bottom 都可以避免這種情況出現(xiàn)。而且不光li,其他的block元素中包含img也會(huì)有這個(gè)現(xiàn)象,只要是inline元素和父級(jí)元素是baseline的屬性的對(duì)齊。
html會(huì)把圖片默認(rèn)為內(nèi)聯(lián)級(jí)元素和文字是一樣的,那文字的話,給他設(shè)置不同的文字大小或字體,肯定會(huì)有不同的行高,或者它們會(huì)有默認(rèn)的行高。這樣就有了img下面的空隙。
具體解決辦法:
第一,給圖片img標(biāo)簽display:block。
1 img {display:block}
第二,定義容器里的字體大小為0。
1 div {
2 width:110px;
3 border:1px solid #000;
4 font-size:0
5 }
第三,定義圖片img標(biāo)簽vertical-align:bottom,vertical-align:middle,vertical-align:top
1 img{vertical-align:bottom;}
至于html屬性align=”center”(對(duì)于圖片瀏覽器會(huì)處理成align=”middle”)的解決辦法,就相當(dāng)于vertical-align:middle; 所以道理也是一樣的,只要vertical-align不取baseline,這個(gè)空隙就消失了。
相關(guān)說(shuō)明
1.ie的顯示有幾種模式,在html文檔的開(kāi)始部分聲明<!doctype ….>
如果聲明為strict模式,ie以w3c的方式顯示文檔,而w3c的標(biāo)準(zhǔn)里面<img />默認(rèn)是一個(gè)inline的標(biāo)簽,除非自己顯式的聲明為 block.
2.那個(gè)空隙是ie針對(duì)盒模型默認(rèn)的line-height和font-size. 給img desplay:block;雖然能解決問(wèn)題,但沒(méi)從結(jié)構(gòu)上來(lái)考慮.可謂治標(biāo)不治本.