以下代码
<!DOCTYPE html>
<html>
<head>
</head>
<body>
<div style="width:200px;height:200px;padding:0px;margin:0px;">
<div style="background-color:red;position:relative;display:block;text-decoration:none;padding:0px;margin:0px;">
<img style="padding:0px;margin:0px;width:200px;height:200px;" src="http://www.google.com/logos/2012/serbia12-hp.jpg">
</div>
</div>
</body>
底部有一个非常奇怪的红色边框,我无法弄清楚为什么会这么开心(包括Chrome和IE)。
如果我使用无效的文档类型(无感叹号)
<DOCTYPE html>
有效吗?
这是什么原因?为什么图像的宽度和高度与外框不完全相同(200px×200px)。我已经尝试了一切,但不知道为什么会发生这种情况?这是一个hmtl Bug还是我做错了什么?
旁注:这是一个复杂多变的HTML构造。上面的例子没有意义,但它说明了问题。如果你能解释为什么会这样,那就太好了。
非常感谢!
答案 0 :(得分:3)
浏览器中的默认行间距不会均匀分为200.由于<img>
默认显示为inline
,因此它会考虑行间距。你看到了这个结果。
将<img>
设置为display: block;
可以解决您的问题。
答案 1 :(得分:1)
这种情况发生的原因(我的猜测是它的规格)是图像与文本的基线对齐。如果你把一些带有下行器的文本(字母的底部字符串)放在一起,你会发现它完全适合......
一个简单的解决方法是告诉浏览器将图像视为具有display: block;
的div。
答案 2 :(得分:0)
看起来你有点white-space bug。两种解决方案:
删除img
:
<div style="background-color:red;position:relative;display:block;text-decoration:none;padding:0px;margin:0px;"><img style="padding:0px;margin:0px;width:200px;height:200px;" src="http://www.google.com/logos/2012/serbia12-hp.jpg"></div>
或者您可以在font-size: 0;
div
包装上为您的内联样式添加img
醇>
此外,在display: block
上声明div
是多余的,您不需要那样做。