盡管已經是老掉牙的東西了,而且IMG在html中出現空隙的老式瀏覽器好多已經一去不復返了,但還是要給大家普及一下原因及原理。
造成圖片在IE下與容器下邊界有空隙的原因
圖片文字等inline元素默認是和父級元素的baseline對齊的,而baseline又和父級底邊有一定距離(這個距離和 font-size,font-family 相關,不一定是 5px),所以設置 vertical-align:top/bottom/text-top/text-bottom 都可以避免這種情況出現。而且不光li,其他的block元素中包含img也會有這個現象。
至於這里的HTML屬性align="center"(對於圖片瀏覽器會處理成align="middle"),就相當於vertical-align:middle; 所以道理也是一樣的,只要vertical-align不取baseline,這個空隙就消失了。
解決方法1:給圖片img標簽display:block。
img{display:block}
解決方法2:定義容器里的字體大小為0。
div { width:110px; border:1px solid #000000; font-size:0 }
解決方法3:定義圖片img標簽vertical-align:bottom,vertical-align:middle,vertical-align:top
img{vertical-align:bottom}
其他還有把圖片下邊距設為負值和改寫HTML標簽的排列。我覺得前三種就完全可以解決了,設為負值覺得沒必要。
相關
1.ie的顯示有幾種模式,在html文檔的開始部分聲明<!DOCTYPE ....>
如果聲明為strict模式,ie以w3c的方式顯示文檔,而w3c的標准里面<img />默認是一個inline的標簽,除非自己顯式的聲明為 block
2.那個空隙是ie針對盒模型默認的line-height和font-size。 給img desplay:block;雖然能解決問題,但沒從結構上來考慮。可謂治標不治本。