我尝试遵循无单位行高,但在使用overflow: auto
和锚点元素时遇到问题。
考虑以下简单页面:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en">
<head>
<title>test</title>
</head>
<body style="font-family: arial; font-size: 12px; line-height: 1;">
<div id="wrapper" style="overflow: auto; background-color: #FFCCCC;">
<p>Blah blah blah</p>
<a href="#" style="text-decoration: none;">Test</a>
</div>
</body>
</html>
font-size: 12px
和 line-height: 1
的组合应该使段落和锚点(不带填充、边距和边框)的高度为12像素。
因此,页面的总高度应为:4 * 12 = 48像素(2个元素加上2 * 12像素的段落边距)。然而,几乎每个浏览器都会“保留”两到三个额外像素来下划线锚点(即使我使用了text-decoration: none
)。Firefox 7、Chrome 14和Opera 11.51都显示这种行为,令人惊讶的是IE9可以正常工作 :)
通过各自的开发者工具栏,您可以看到所有浏览器都认为div元素的高度为48像素,但只有IE认为锚点的高度为12像素。其他浏览器说是14或15像素,导致滚动条出现。
当删除overflow: auto
不是一种选项时(在我的情况下, div 是由框架生成的,有时只包含浮动元素,因此使用 overflow 扩展 div 以封装其子元素),是否有任何适当的解决方案? 比如给锚点设置font-size: 15px
或line-height: 1.2
之类的东西会更好吗?谢谢, Moolie