这是一个非常简单的 HTML 文档:
<!DOCTYPE HTML>
<html>
<head>
<style type="text/css">
.MyInputClass {position: absolute; left:32px; top:64px; width:119px; height:19px; padding: 0; font-weight: normal; font-style: normal; text-decoration: none; font-size: 13px; text-align:left;}
.MySelectClass {position: absolute; left:159px; top:64px; width:121px; height:21px; padding: 0; font-weight: normal; font-style: normal; text-decoration: none; font-size: 13px; }
</style>
</head>
<body>
<input class="MyInputClass" type="TEXT" id="MyEdit">
<select class="MySelectClass" id="MySelect" ></select>
</body>
</html>
这不是我使用的实际 HTML,但它用于演示目的。使用所有版本的 FireFox(从 13.0 到 24.0)这是我得到的(链接到 imgur.com 上的图像):
请注意,在 Windows 7 下,INPUT 和 SELECT 元素的视觉高度匹配,但在 Windows XP 下,INPUT 元素的高度比 SELECT 大 2 个像素。
使用 Firebug,我可以检测到 Firefox 在 Windows XP 下使用边框宽度 = 2px,而在 Windows 7 下仅使用 1px。我猜这来自内置样式表?
另请注意,使用 CSS 重置之类的东西,可以说:
<style type="text/css">
input {border-width: 1px;}
</style>
这不是一个可行的解决方案,因为每当我们显式设置边框宽度时,边框绘制都会发生变化,并且我们也会得到不一致的边框:
请注意,input
元素的底部和右侧边框几乎是不可见的。
所以,我的问题是:
- 有没有其他选择,或者我将不得不使用一些 CSS 重置脚本?
- 为什么 Firefox 会有这种不一致的行为?
- 如果 FF 对不同的操作系统有不同的风格,我如何确保我的网站或 Web 应用程序将在未来的 Windows、Mac 或 Linux 版本中正确呈现?(恕我直言,这似乎是不可能的。)
我还测试了 Chrome 和 Safari,他们没有显示这个问题。