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