最近在項目項目中發現了一個問題,其實這個問題之前碰到過屢次,只是一直沒有找到緣由,今天特地作一下記錄。css
代碼以下:html
<iframe id="mainFrame" name="mainFrame" src="" style="overflow:visible;" scrolling="yes" frameborder="no" width="100%" height="650"> <div id="left"> <iframe id="cmsMenuFrame" name="cmsMenuFrame" src="${ctx}/cms/tree" style="overflow:visible;" scrolling="yes" frameborder="no" width="100%"></iframe> </div> <div id="openClose" class="close"> </div> <div id="right"> <iframe id="cmsMainFrame" name="cmsMainFrame" src="${ctx}/cms/none" style="overflow:visible;"scrolling="yes" frameborder="no" width="100%"></iframe> </div> </iframe>
當我設置這些iframe height:100%的時候,第一個iframe老是會出現滾動條;html5
隨後我發現iframe的父級容器div老是會比iframe大5px。wordpress
若是要解決問題的話,能夠在父級div中設置高度,可是若是父級div還有div嵌套的話,這樣層層設置就很冗餘了。spa
隨後在網上尋找解決方案,div包裹的iframe有5px的高度差問題.net
2016年10月13日更新:code
這個問題產生的緣由是什麼呢?xml
網上說html規範致使的,若是是htm
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml">
這樣是沒問題的。blog
而使用html5標籤
<!DOCTYPE html> <html>
就會相差幾個像素;
其實不必定就是5個像素,相差的像素取決於行內高度。
爲何這麼說呢?由於上面的緣由並非致使這樣問題的真正根源。
真正的緣由是iframe在html5中的是一個行內樣式(display: inline),雖然並無寫出來,可是表現出來的就是一個行內樣式。
這也是爲何給iframe設置dispaly:block;或者vertical-align:bottom或者給外層div設置font-size:0就可讓空白空間消失了。img和外層div也有這個問題,也能夠這樣解決。
感謝張鑫旭大牛的文章,讓我明白了這個問題。推薦他的文章: