div的不需要的填充底部

Ala*_*lan 17 html css

这是我的HTML:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3.org/TR/xhtml11/DTD/xhtml11.dtd">

<div style="border:1px solid red; float:left; padding:0;">
    <img src="xxx.jpg">
</div>
Run Code Online (Sandbox Code Playgroud)

我不知道为什么div包含一些填充底部甚至我设置填充:0.

如果我删除DOCTYPE,则不会发生此问题.有没有其他方法可以在不删除DOCTYPE的情况下解决此问题?

med*_*iev 36

img { display:block; }
Run Code Online (Sandbox Code Playgroud)

要么

img { vertical-align:bottom; }
Run Code Online (Sandbox Code Playgroud)

会工作.由于图像是内联的,文本是内联的,因此用户代理会为下行字符(y,q,g)留出一些空间.要为图像取消此效果,您可以指定上述任一样式,但您可能希望使规则更具体,因此您不会定位不希望应用此图像的图像.

演示:http://jsbin.com/obuxu

另一个海报指出的另一个选择是在父元素上将line-height设置为0.

技术说明:https://developer.mozilla.org/en/Images,_Tables,_and_Mysterious_Gaps

  • 这不是*特定于IE,它是许多现代渲染引擎的自然行为,包括您心爱的Gecko. (5认同)

Abi*_*adi 10

设置行高:0; 在div风格:

<div style="border:1px solid red; float:left; padding:0; line-height:0;">
<img src="xxx.jpg" />
</div>
Run Code Online (Sandbox Code Playgroud)

img是一个内联元素,因此它为下载字符节省了空间.调整div中的行高消除了这个问题.或者,您也可以更改img以显示为块元素.